例如有一个用户属性表单,其中一个属性 admin 标记用户是否为特权用户 在管理面板里可编辑用户,包括设定用户权限
这里就遇到个矛盾: 如果把 admin 属性放在表单里,由于 admin 被 mass-assign protected,无法提交 如果单独为 admin 属性设置 edit 和 update 方法,又感觉很臃肿(可能还有其他被 protect 的属性)
有没有好方法化解这个矛盾
可以加 scope,accessible_attr :var1,:var2,...,:as => admin
http://apidock.com/rails/ActiveRecord/Persistence/update_attributes
现在有 without_protection 这个参数了
再配合 params[:xxx].slice(...) 来用
我在 gitlab 的代码里看到是这样的
admin = params[:user].delete("admin") admin_user = User.new(params[:user]) admin_user.admin = admin admin_user.save! blablabla