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

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.active_authorizer[role_name].to_a
  end

  method_name = if klass.active_authorizer[ 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, active_authorizer)
  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| active_authorizer.has_key? role }

  if roles_array.any?
    [ roles_array.map(&:to_s).join('_').to_sym, roles_array ]
  else
    [ nil, roles_array ]
  end
end