这可能是一个非常愚蠢的问题,但我们开始吧
class Foo < ActiveRecord::Base
attr_accessor :group_id
end
来自irb
# gets record which has group_id set to 106
foo = Foo.find(1)
foo.group_id
=> nil
如果我去移除
attr_accessor :group_id
一切正常
foo = Foo.find(1)
foo.group_id
=> 106
我的问题是为什么?不应该 attr_accessor 为属性 :group_id 创建访问器/突变器,这就是为什么一切都应该工作的原因。我错过了什么?
更新
好的答案如下,正如我在这里的动机的解释是我想使用某些属性的质量分配(从 Rails 3.2.x 开始你需要这个)。为此,您需要 attr_accessible ,我发现这样代码更干净,当然如果负责任地使用:)