Class: Group
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Group
- Includes:
- ActiveModel::ForbiddenAttributesProtection, PublicActivity::Common
- Defined in:
- app/models/group.rb
Instance Attribute Summary (collapse)
-
- (Object) new_leader
have getters and setters for a new_leader virtual attribute.
Instance Method Summary (collapse)
-
- (Boolean) can_resign_leadership?(membership)
Test if a user can be demoted to regular member or removed from a group.
- - (Object) create_leader
-
- (Boolean) has_member?(user)
Test if a user is part of this group.
-
- (Boolean) made_request?(user)
Test if a user has requested membership in this group.
-
- (Object) update_membership_perms
Manually cascade the callbacks for membership permissions.
-
- (Boolean) user_has_permissions?(user, level, type, permissions)
Test if a user has a certain permission at a level within a group.
-
- (Object) users_not_in_group
Deliver a list of only users not currently in the group Used for adding new users to a group and avoiding duplication.
Instance Attribute Details
- (Object) new_leader
have getters and setters for a new_leader virtual attribute
28 29 30 |
# File 'app/models/group.rb', line 28 def new_leader @new_leader end |
Instance Method Details
- (Boolean) can_resign_leadership?(membership)
Test if a user can be demoted to regular member or removed from a group
62 63 64 |
# File 'app/models/group.rb', line 62 def can_resign_leadership?(membership) return self.leaders.count > 1 || !membership.is_leader? end |
- (Object) create_leader
37 38 39 |
# File 'app/models/group.rb', line 37 def create_leader self.new_leader = Membership.create(:user_id => new_leader, :group_id => self.id, :level => 9) if new_leader.present? end |
- (Boolean) has_member?(user)
Test if a user is part of this group
52 53 54 |
# File 'app/models/group.rb', line 52 def has_member?(user) users.include?(user) end |
- (Boolean) made_request?(user)
Test if a user has requested membership in this group
57 58 59 |
# File 'app/models/group.rb', line 57 def made_request?(user) all_users.include?(user) end |
- (Object) update_membership_perms
Manually cascade the callbacks for membership permissions.
31 32 33 34 35 |
# File 'app/models/group.rb', line 31 def update_membership_perms self.memberships.each do |m| m.run_callbacks(:save) end end |
- (Boolean) user_has_permissions?(user, level, type, permissions)
Test if a user has a certain permission at a level within a group. Sample usage: user_has_permissions?(user, :regular, :screen, [:subscribe, :all]) will test if the `user` has either :all or :subscribe permissions as a supporter in the screen permission type of the current group.
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/models/group.rb', line 70 def (user, level, type, ) return false if user.nil? m = memberships.where(:user_id => user, :level => Membership::LEVELS[level]).first return false if m.nil? return false unless m.perms.include?(type) = [] if .is_a? Symbol .each do |p| return true if m.perms[type] == p end return false end |
- (Object) users_not_in_group
Deliver a list of only users not currently in the group Used for adding new users to a group and avoiding duplication
43 44 45 46 47 48 49 |
# File 'app/models/group.rb', line 43 def users_not_in_group users = User.all self.memberships.each do |m| users.delete_if {|key,value| key.id == m.user_id} end return users end |