我刚刚在我的模型上设置了一个新的布尔accepted
属性,如下所示:
class Invitation < ActiveRecord::Base
attr_protected :accepted
...
end
我希望它是一个私有属性但是当我尝试删除这样的公共setter时:
class Invitation < ActiveRecord::Base
attr_protected :accepted
private :accepted=
...
end
我立刻失败了这个类型:
invitation.rb:17:in `private': undefined method `accepted=' for class `Invitation' (NameError)
为什么AR没有检测到setter?我知道我可以通过手工定义方法来做到这一点但我感兴趣的是为什么我不能使用速记private :accepted=
路线。
答案 0 :(得分:0)
属性getter和setter不是实际方法,它们是使用ActiveRecord中的method_missing
实现的。这就是为什么你不能使用private
来操纵它们。