【发布时间】:2012-07-15 06:21:43
【问题描述】:
Devise 的示例和教程说我在用户模型中有这样的东西:
attr_accessible :name, :password, :password_confirmation, :remember_me
所以我对此有两个问题。
为什么要让“名称”和“密码”可访问?我希望他们受到保护,设计是否让我改变这一点?
像“password_confirmation”和“remember_me”这样的字段在用户模型中到底有什么作用?现在我可以写
User.find(1).password_confirmation之类的东西了,它可以工作但完全没有意义。
如何处理?
【问题讨论】:
-
2 美分:大约
password_confirmation,你觉得奇怪是对的 - 代码味道在某种程度上 - 这不是域的问题;但它容易所以我们做到了。关于remember_me- IMO 它是域的一部分 - 就User被用于类似你知道的身份验证的目的而言。 -
Devise 不会在您的模型上打扰或强制执行任何操作 - 您可以决定您想要什么。也适用于
attr_accessible。 IMO,“敏感”字段,例如“is_admin”或“paid_for_subscription”等属性,不得批量分配。密码字段实际上只是该用户的任何其他数据,因此在用户的上下文中批量分配是可以的。当然,您不希望其他用户修改其他用户的数据,但这不是attr_accessible旨在防止的 - 这取决于您的保护(想想“范围界定”)。
标签: ruby-on-rails devise