是否有“声明”方式来授权模型的哪些属性可以更改?

时间:2012-07-13 16:36:07

标签: ruby-on-rails activerecord model authorization

使用attr_accessible是不够的,因为它可以打开或关闭。

某些型号具有用户表单和管理表单。对于管理员来说,他们需要能够进行大规模分配的属性需要在attr_accessible中,但这意味着普通用户可能会恶意注入这些参数。在管理员端手动分配所有内容似乎需要做很多工作,并且attr_accessible对普通用户可以改变的那些属性进行分配。

这个问题是否有以导轨为中心的标准解决方案?也许是宝石?

我设想这样的事情:

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

2 个答案:

答案 0 :(得分:1)

您需要:as的{​​{1}}选项。

有关更多信息和示例,请参阅this Rails doc

虽然是一个简单的例子(来自链接):

attr_accessible

答案 1 :(得分:1)

我建议你阅读这篇关于在控制器中设置质量可分配属性的官方博文:http://weblog.rubyonrails.org/2012/3/21/strong-parameters/

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

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