Rails 表单与 mass-assign 的矛盾怎么解决比较优雅

suupic · 2012年04月28日 · 最后由 ruohanc 回复于 2012年04月28日 · 3441 次阅读

例如有一个用户属性表单,其中一个属性 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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号