Class: OpenStax::Accounts::Group
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- OpenStax::Accounts::Group
- Defined in:
- app/models/openstax/accounts/group.rb
Instance Attribute Summary collapse
-
#requestor ⇒ Object
Returns the value of attribute requestor.
-
#syncing ⇒ Object
Returns the value of attribute syncing.
Instance Method Summary collapse
- #add_member(account) ⇒ Object
- #add_owner(account) ⇒ Object
- #has_direct_member?(account) ⇒ Boolean
- #has_member?(account) ⇒ Boolean
- #has_owner?(account) ⇒ Boolean
- #subtree_group_ids ⇒ Object
- #supertree_group_ids ⇒ Object
Instance Attribute Details
#requestor ⇒ Object
Returns the value of attribute requestor.
7 8 9 |
# File 'app/models/openstax/accounts/group.rb', line 7 def requestor @requestor end |
#syncing ⇒ Object
Returns the value of attribute syncing.
7 8 9 |
# File 'app/models/openstax/accounts/group.rb', line 7 def syncing @syncing end |
Instance Method Details
#add_member(account) ⇒ Object
78 79 80 81 82 83 84 85 86 87 |
# File 'app/models/openstax/accounts/group.rb', line 78 def add_member(account) return unless account.is_a? OpenStax::Accounts::Account gm = GroupMember.new gm.group = self gm.user = account return unless gm.valid? gm.save if persisted? group_members << gm gm end |
#add_owner(account) ⇒ Object
67 68 69 70 71 72 73 74 75 76 |
# File 'app/models/openstax/accounts/group.rb', line 67 def add_owner(account) return unless account.is_a? OpenStax::Accounts::Account go = GroupOwner.new go.group = self go.user = account return unless go.valid? go.save if persisted? group_owners << go go end |
#has_direct_member?(account) ⇒ Boolean
54 55 56 57 58 59 60 |
# File 'app/models/openstax/accounts/group.rb', line 54 def has_direct_member?(account) return false unless account.is_a? OpenStax::Accounts::Account gms = group_members gms = gms.preload(:user) if persisted? gms.any?{ |gm| gm.user == account } end |
#has_member?(account) ⇒ Boolean
62 63 64 65 |
# File 'app/models/openstax/accounts/group.rb', line 62 def has_member?(account) return false unless account.is_a? OpenStax::Accounts::Account !account.group_members.where(group_id: subtree_group_ids).first.nil? end |
#has_owner?(account) ⇒ Boolean
46 47 48 49 50 51 52 |
# File 'app/models/openstax/accounts/group.rb', line 46 def has_owner?(account) return false unless account.is_a? OpenStax::Accounts::Account gos = group_owners gos = gos.preload(:user) if persisted? gos.any?{ |go| go.user == account } end |
#subtree_group_ids ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'app/models/openstax/accounts/group.rb', line 103 def subtree_group_ids return cached_subtree_group_ids unless cached_subtree_group_ids.nil? return [] unless persisted? reload gids = [openstax_uid] + Group.includes(:container_group_nesting) .where(container_group_nesting: { container_group_id: openstax_uid }) .collect{|g| g.subtree_group_ids}.flatten update_column(:cached_subtree_group_ids, gids) self.cached_subtree_group_ids = gids end |
#supertree_group_ids ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'app/models/openstax/accounts/group.rb', line 89 def supertree_group_ids return cached_supertree_group_ids unless cached_supertree_group_ids.nil? return [] unless persisted? reload gids = [openstax_uid] + (Group.includes(:member_group_nestings) .where(member_group_nestings: { member_group_id: openstax_uid }) .first.try(:supertree_group_ids) || []) update_column(:cached_supertree_group_ids, gids) self.cached_supertree_group_ids = gids end |