0

我有一个用户模型。它的一个属性是一个名为的字符串: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

4

1 回答 1

2

attr_accessor正在覆盖从 db 读取和写入属性的默认方法。attr_accessor如果它已经是 db 中的列并Rails为您提供了读写方法,为什么还需要它。你把它和 混淆了attr_accessible吗?

于 2013-09-19T23:26:52.563 回答