2

我的模型包含一个“管理”字段,它是真或假。它不在“attr_accessible”上,因为我们不希望坏人能够欺骗我们的控制器向用户提供“管理员”权限。

因为,如果我在我的模型中以管理员身份登录,我“确实”希望能够更新任何用户的记录以创建或取消他们的管理员。所以......管理员缺少 attr_accessible 阻止我这样做。

也许这不是看待它的正确方式。处理这种情况的正确方法是什么?

4

1 回答 1

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的任何 Active Record 调用的可访问属性。:as => :admin

如果您没有调用accessible_attributes该定义,则只能访问那里定义的属性。

于 2012-07-03T01:35:24.767 回答