请解释一下,我怎样才能用几种方法在数据库中记录,改变我不想成为的属性attr_accessible
。
例如,在用户模型中:
attr_accessible :email, :password, :password_confirmation, :guest
由于安全问题,我不希望将 'admin' true 或 false 行放在这里
请解释一下,我怎样才能用几种方法在数据库中记录,改变我不想成为的属性attr_accessible
。
例如,在用户模型中:
attr_accessible :email, :password, :password_confirmation, :guest
由于安全问题,我不希望将 'admin' true 或 false 行放在这里
您可以手动分配属性,例如,如果您的模型名为 User,您可以执行以下操作:
user = User.first
user.update_attributes(attributes_hash)
user.admin = true
user.save
例如, attr_accessible 仅用于通过 update_attributes 进行批量分配,但您始终可以通过直接调用它来分配特定属性,就像我上面的示例一样。
我想您可能会问如何在测试或开发环境中更改 admin 属性而不将其添加到attr_accessable
.
一种方法是toggle
方法。例如,
user = User.first
user.admin?
=> false
user.toggle!(:admin)
user.admin?
=> true
有几件事toggle
要考虑。该属性必须作为符号传递,并且跳过所有回调和验证。换句话说,对测试和开发之外的任何事情都要小心。因此,这就是您可以批量分配 admin 属性而不将其添加到attr_accessable
.