attr_accessor在Rails中打破了我的两个方法

时间:2013-09-19 23:02:48

标签: ruby ruby-on-rails-3 attr-accessor

我有一个用户模型。其中一个属性是名为: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,则会返回niluser.admin?会返回false

1 个答案:

答案 0 :(得分:2)

attr_accessor正在覆盖从db读取和写入属性的默认方法。如果它已经是db中的列,那么为什么需要attr_accessorRails为您提供了读写方法。您是否将其与attr_accessible混淆了?