0

请解释一下,我怎样才能用几种方法在数据库中记录,改变我不想成为的属性attr_accessible

例如,在用户模型中:

attr_accessible :email, :password, :password_confirmation, :guest

由于安全问题,我不希望将 'admin' true 或 false 行放在这里

4

2 回答 2

0

您可以手动分配属性,例如,如果您的模型名为 User,您可以执行以下操作:

user = User.first
user.update_attributes(attributes_hash)
user.admin = true
user.save

例如, attr_accessible 仅用于通过 update_attributes 进行批量分配,但您始终可以通过直接调用它来分配特定属性,就像我上面的示例一样。

于 2013-05-14T23:29:17.403 回答
0

我想您可能会问如何在测试或开发环境中更改 admin 属性而不将其添加到attr_accessable.

一种方法是toggle方法。例如,

user = User.first
user.admin?
=> false
user.toggle!(:admin)
user.admin?
=> true

有几件事toggle要考虑。该属性必须作为符号传递,并且跳过所有回调和验证。换句话说,对测试和开发之外的任何事情都要小心。因此,这就是您可以批量分配 admin 属性而不将其添加到attr_accessable.

于 2013-05-15T03:44:49.483 回答