ruby-on-rails – Rails 3.1 attr_accessible验证接收一系列角色
我想使用rails new dynamic attr_accessible功能.但是我的每个用户都有很多角色(我使用的是声明式授权).所以我的模型中有以下内容:
class Student < ActiveRecord::Base attr_accessible :first_name,:as=> :admin end 我在我的控制器中传递了这个: @student.update_attributes(params[:student],:as => user_roles) user_roles是一个符号数组: user_roles = [:admin,:employee] 我希望我的模型检查数组中的一个符号是否与声明的attr_accessible匹配.因此,我避免任何重复. 例如,假设user_roles = [:admin,:employee].这有效: @student.update_attributes(params[:student],:as => user_roles.first) 但如果我只能验证一个角色或符号,那就没用了,因为我的所有用户都有很多角色. 任何帮助将不胜感激 *************** UPDATE ************************ 您可以在此处下载示例应用: 这个应用程序中有两个示例:尽管’user_roles = [:admin,:student]’,但y无法更新任何属性的学生;而且我只能更改名字的人因为我在控制器更新操作中使用“user_roles.first”.希望这可以帮助.我相信别人一定有这个问题. 解决方法
您可以按如下方式修补
ActiveModel’s mass assignment module:
# in config/initializers/mass_assignment_security.rb module ActiveModel::MassAssignmentSecurity::ClassMethods def accessible_attributes(roles = :default) whitelist = ActiveModel::MassAssignmentSecurity::WhiteList.new Array.wrap(roles).inject(whitelist) do |allowed_attrs,role| allowed_attrs + accessible_attributes_configs[role].to_a end end end 这样,您可以将数组作为update_attributes的:as选项传递 请注意,如果accessible_attrs_configs包含BlackList(来自使用attr_protected),这可能会中断 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |