attr_accessible< - > :as => :admin< - > db:seed< - >

时间:2012-07-18 00:31:19

标签: ruby-on-rails security

我有点陷入困境。

  1. 如果必须保护用户的'role'属性免受质量分配问题的影响,我必须使用attr_accessible并将其排除。
  2. 但是如果我必须允许管理员设置它,那么我必须添加:as => :admin使用assign_attributes。
  3. 但是如果我必须设置一些默认角色,那么db:seed将无效。
  4. 有没有办法满足所有这三种需求?

    谢谢。

1 个答案:

答案 0 :(得分:0)

有一些关于质量分配的方法,但我并不是他们的粉丝。

例如:

role = Role.new
role.assign_attributes({...}, :without_protection => true)
role.save

我更喜欢使用我写的名为sudo_attributes的gem,它为您提供“sudo”权限:

Role.sudo_create(...)

API与ActiveRecord相同,用于创建和实例化模型。