2013-05-14 32 views
0

请解释一下,如何使用多种方法在数据库中创建记录,更改属性我不想成为attr_accessible批量分配问题

例如,在用户模型:

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

我不想“管理员”真的还是假的行放在这里,因为安全问题的

+1

也许你想允许只为管理员更改管理员行,所以使用'attr_accessible:email::password,:password_confirmation,:guest,:admin,as :: admin',然后更新'update_attributes({admin:true },如::admin)'(质量分配) –

回答

0

您可以手动分配属性,例如如果你的模型被命名为用户,你可以做到以下几点:

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

attr_accessible仅用于通过update_attributes方法例如质量分配,但你总是可以分配通过直接调用它,就像我上面的示例一样。

0

我想你可能会问如何在测试或开发环境中更改管理员属性,而无需将其添加到attr_accessable

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

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

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