Class: RolesManagementAPI::RoleAssignmentArray
- Inherits:
-
Object
- Object
- RolesManagementAPI::RoleAssignmentArray
- 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
- #<<(assignment) ⇒ Object
- #[](idx) ⇒ Object
- #as_json ⇒ Object
- #delete(member) ⇒ Object
- #each(&block) ⇒ Object
-
#initialize(role_id) ⇒ RoleAssignmentArray
constructor
A new instance of RoleAssignmentArray.
- #length ⇒ Object
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_json ⇒ Object
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 |
#length ⇒ Object
60 61 62 |
# File 'lib/roles-management-api/role.rb', line 60 def length @assignments.length end |