我有一个用户模型。其中一个属性是名为:access
的字符串,可以是nil,“admin”或“active”。
现在在User模型中我有以下方法:
def admin?
self.access == "admin"
end
def active?
self.access == "active"
end
他们工作正常。但是,如果我将attr_accessor :access
添加到模型中会出现问题。我的admin?
和active?
方法不再有效。当我进入rails控制台并让用户离开数据库时,我可以看到user = User.find(7)
显示access
设置为“admin”。但如果我输入user.access
,则会返回nil
。 user.admin?
会返回false
。
答案 0 :(得分:2)
attr_accessor
正在覆盖从db读取和写入属性的默认方法。如果它已经是db中的列,那么为什么需要attr_accessor
,Rails
为您提供了读写方法。您是否将其与attr_accessible
混淆了?