1

attr_accessible 的使用还不够,因为它要么打开要么关闭。

一些模型有用户表单,也有管理表单。对于管理员来说,他们需要能够批量分配的属性需要在 attr_accessible 中,但这意味着普通用户可以恶意注入这些参数。在管理员端手动分配所有内容似乎需要做很多工作,并且将 attr_accessible 分配给普通用户可以更改的那些属性。

是否有针对此问题的以 Rails 为中心的标准解决方案?也许是宝石?

我设想这样的事情:

model.update_attributes_with_user(params[:model], user)
4

2 回答 2

1

:as想要attr_accessible.

有关更多信息和示例,请参阅此 Rails 文档

作为一个简单的例子(来自链接):

 attr_accessible :name, :credit_rating, :as => :admin
 customer.assign_attributes({ "name" => "David", ... }, :as => :admin)
于 2012-07-13T16:45:11.947 回答
1

我建议您阅读有关在控制器中设置批量分配属性的官方博客文章:http ://weblog.rubyonrails.org/2012/3/21/strong-parameters/

它还链接到帮助实现所谓的切片模式(或其提取)的 gem: https ://github.com/rails/strong_parameters

此解决方案允许您在用户控制器和 admin_users 控制器中以不同方式指定可编辑属性。

于 2012-07-13T16:48:58.820 回答