我的模型包含'admin'字段,该字段为true或false。它不是'attr_accessible',因为我们不希望坏人能够欺骗我们的控制器为用户提供'admin'权限。
因为,如果我在我的模型中以管理员身份登录,我'确实'希望能够更新任何用户的记录来制作或从中删除管理员。所以......管理员缺乏attr_accessible使我无法这样做。
也许这不是看待它的正确方法。处理这种情况的正确方法是什么?谢谢!
答案 0 :(得分:4)
Rails 3.2添加了一项功能,可以让您完成您所描述的内容。只需在您的模型中定义:
attr_accessible accessible_attributes + [:admin], :as => :admin
然后在要分配admin属性的控制器中,执行以下操作:
User.new(params[:user], :as => :admin)
或
user.update_attributes(params[:user], :as => :admin)
使用attr_accessible
进行:as => :admin
调用之前列出的所有属性都将是支持:as => :admin
选项的任何Active Record调用的可访问属性。
如果您没有在该定义中调用accessible_attributes
,那么只有那里定义的属性才可以访问。