Module: IAmICan::Role::Assignment

Includes:
Helpers::Ins
Defined in:
lib/i_am_i_can/role/assignment.rb

Instance Method Summary collapse

Methods included from Helpers::Ins

#__role, #_role_assignment_result, #local_role_names, #local_roles, #roles

Instance Method Details

#becomes_a(*roles, which_can: [ ], obj: nil, auto_define_before: i_am_i_can.auto_define_before, save: i_am_i_can.default_save) ⇒ Object Also known as: is, is_a_role, is_roles, has_role, has_roles, role_is, roles_are



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/i_am_i_can/role/assignment.rb', line 8

def becomes_a *roles, which_can: [ ], obj: nil, auto_define_before: i_am_i_can.auto_define_before, save: i_am_i_can.default_save
  should_define_role = which_can.present? || auto_define_before
  self.class.have_roles *roles, which_can: which_can, obj: obj, save: save if should_define_role
  failed_items = [ ]

  roles.map(&__role).each do |role|
    if save
      failed_items << role unless stored_roles_add(role)
    else
      next failed_items << role unless role.in?(defined_roles.keys)
      local_role_names << role unless role.in?(local_role_names)
    end
  end

  _role_assignment_result(roles, failed_items)
end

#falls_from(*roles, saved: i_am_i_can.default_save) ⇒ Object Also known as: is_not_a, will_not_be, removes_role, leaves, has_not_role, has_not_roles



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/i_am_i_can/role/assignment.rb', line 39

def falls_from *roles, saved: i_am_i_can.default_save
  failed_items = [ ]

  roles.each do |role|
    if saved
      failed_items << role unless stored_roles_rmv(role)
    else
      next failed_items << role unless role.in?(defined_roles.keys)
      local_role_names.delete(role)
    end
  end

  _role_assignment_result(roles, failed_items)
end

#temporarily_is(*roles, **options) ⇒ Object Also known as: locally_is



33
34
35
# File 'lib/i_am_i_can/role/assignment.rb', line 33

def temporarily_is *roles, **options
  becomes_a *roles, save: false, **options
end