Module: MassAssignmentWithMultipleRoles
- Extended by:
- MassAssignmentWithMultipleRoles
- Included in:
- MassAssignmentWithMultipleRoles
- Defined in:
- lib/mass_assignment_with_multiple_roles.rb,
lib/mass_assignment_with_multiple_roles/version.rb
Constant Summary collapse
- ROLE_NAMES_METHOD =
:role_names
- VERSION =
"0.0.1"
Instance Method Summary collapse
- #build_new_attrs_config(roles_array, new_role_name, klass) ⇒ Object
- #compile_role_name(roles, active_authorizer) ⇒ Object
Instance Method Details
#build_new_attrs_config(roles_array, new_role_name, klass) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/mass_assignment_with_multiple_roles.rb', line 25 def build_new_attrs_config(roles_array, new_role_name, klass) fields = roles_array.inject([]) do |result, role_name| result += klass.[role_name].to_a end method_name = if klass.[ roles_array[0] ].is_a? ActiveModel::MassAssignmentSecurity::WhiteList :attr_accessible else :attr_protected end klass.send method_name, *fields, :as => new_role_name end |
#compile_role_name(roles, active_authorizer) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/mass_assignment_with_multiple_roles.rb', line 7 def compile_role_name(roles, ) roles_array = if roles.is_a? Array roles elsif roles.respond_to? ROLE_NAMES_METHOD [roles.send(ROLE_NAMES_METHOD)].flatten else [roles] end roles_array = roles_array.find_all { |role| .has_key? role } if roles_array.any? [ roles_array.map(&:to_s).join('_').to_sym, roles_array ] else [ nil, roles_array ] end end |