轨模型attr_accessor属性不节能?(Rails model attr_accessor a

2019-09-24 04:10发布

这是我的工作结构:

应用程序/模型/ model.rb

class Model < ActiveRecord::Base
    attr_accessor :some_var
end

应用程序/模型/ model_controller.rb

class ModelsController < ApplicationController
    def show
        @model = Model.find(params[:id])
        @other_var
        if @model.some_var.nil?
            @model.some_var = "some value"
            @other_var = "some value"
        else
            @other_var = @model.some_var
        end
    end
end

每当我运行此代码(如显示方法),如果条款被评估为真(如@ model.some_var ==无)。 如何解决这个问题? 有什么不对,我attr_accessor是如何工作的设想?

Answer 1:

attr_accessor是一个内置的Ruby宏将定义setter和对象的实例变量一个getter,并且没有任何与用ActiveRecord实例数据库列。 例如:

class Animal
  attr_accessor :legs
end

a = Animal.new
a.legs = 4
a.legs #=> 4

如果你希望它被保存到数据库中,你需要在迁移中定义列。 然后ActiveRecord的将自动创建存取方法,你可以(应该)删除您attr_accessor声明。



文章来源: Rails model attr_accessor attribute not saving?