Module: Groupify::ActiveRecord::GroupMember::ClassMethods
- Defined in:
- lib/groupify/adapter/active_record/group_member.rb
Instance Method Summary collapse
- #as(membership_type) ⇒ Object
- #group_class_name ⇒ Object
- #group_class_name=(klass) ⇒ Object
- #in_all_groups(*groups) ⇒ Object
- #in_any_group(*groups) ⇒ Object
- #in_group(group) ⇒ Object
- #in_only_groups(*groups) ⇒ Object
- #shares_any_group(other) ⇒ Object
Instance Method Details
#as(membership_type) ⇒ Object
98 99 100 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 98 def as(membership_type) joins(:group_memberships).where(group_memberships: { membership_type: membership_type }) end |
#group_class_name ⇒ Object
95 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 95 def group_class_name; @group_class_name ||= 'Group'; end |
#group_class_name=(klass) ⇒ Object
96 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 96 def group_class_name=(klass); @group_class_name = klass; end |
#in_all_groups(*groups) ⇒ Object
115 116 117 118 119 120 121 122 123 124 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 115 def in_all_groups(*groups) groups = groups.flatten return none unless groups.present? joins(:group_memberships). group("#{quoted_table_name}.#{connection.quote_column_name('id')}"). where(:group_memberships => {:group_id => groups.map(&:id)}). having("COUNT(group_memberships.group_id) = #{groups.count}"). uniq end |
#in_any_group(*groups) ⇒ Object
108 109 110 111 112 113 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 108 def in_any_group(*groups) groups = groups.flatten return none unless groups.present? joins(:group_memberships).where(group_memberships: { group_id: groups.map(&:id) }).uniq end |
#in_group(group) ⇒ Object
102 103 104 105 106 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 102 def in_group(group) return none unless group.present? joins(:group_memberships).where(group_memberships: { group_id: group.id }).uniq end |
#in_only_groups(*groups) ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 126 def in_only_groups(*groups) groups = groups.flatten return none unless groups.present? joins(:group_memberships). group("#{quoted_table_name}.#{connection.quote_column_name('id')}"). having("COUNT(DISTINCT group_memberships.group_id) = #{groups.count}"). uniq end |
#shares_any_group(other) ⇒ Object
136 137 138 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 136 def shares_any_group(other) in_any_group(other.groups) end |