Class: RolesManagementAPI::RoleAssignmentArray

Inherits:
Object
  • Object
show all
Defined in:
lib/roles-management-api/role.rb

Overview

RoleAssignmentArray is an array-like class used by Role for maintaining its assignment list. Its primary purpose is to add the Rails-required “_destroy: true” attribute in its as_json for any assignment which has been removed.

Instance Method Summary collapse

Constructor Details

#initialize(role_id) ⇒ RoleAssignmentArray

Returns a new instance of RoleAssignmentArray.



37
38
39
40
# File 'lib/roles-management-api/role.rb', line 37

def initialize(role_id)
  @assignments = []
  @role_id = role_id
end

Instance Method Details

#<<(assignment) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/roles-management-api/role.rb', line 42

def <<(assignment)
  raise "You may only add objects of type 'RoleAssignment' or 'Person'" unless assignment.is_a?(RoleAssignment) or assignment.is_a?(Person)

  if assignment.is_a?(Person)
    @assignments << RoleAssignment.new({entity_id: assignment.id, role_id: @role_id})
  else
    @assignments << assignment
  end
end

#[](idx) ⇒ Object



52
53
54
# File 'lib/roles-management-api/role.rb', line 52

def [](idx)
  @assignments[idx]
end

#as_jsonObject



77
78
79
# File 'lib/roles-management-api/role.rb', line 77

def as_json
  @assignments.map{ |a| a.as_json }
end

#delete(member) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/roles-management-api/role.rb', line 64

def delete(member)
  raise "You may only delete objects of type 'RoleAssignment'" unless member.is_a?(RoleAssignment)

  @assignments.each do |assignment|
    if (assignment.id == member.id) and (member.id != nil)
      assignment.destroy = true
      return true
    end
  end

  return false
end

#each(&block) ⇒ Object



56
57
58
# File 'lib/roles-management-api/role.rb', line 56

def each &block
  @assignments.each &block
end

#lengthObject



60
61
62
# File 'lib/roles-management-api/role.rb', line 60

def length
  @assignments.length
end