Module: Groupify::ActiveRecord::GroupMember::ClassMethods
- Defined in:
- lib/groupify/adapter/active_record/group_member.rb
Instance Method Summary collapse
- #as(membership_type) ⇒ 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
108 109 110 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 108 def as(membership_type) joins(:group_memberships).where(group_memberships: { membership_type: membership_type }) end |
#in_all_groups(*groups) ⇒ Object
125 126 127 128 129 130 131 132 133 134 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 125 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(#{reflect_on_association(:group_memberships).klass.quoted_table_name}.#{connection.quote_column_name('group_id')}) = ?", groups.count). uniq end |
#in_any_group(*groups) ⇒ Object
118 119 120 121 122 123 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 118 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
112 113 114 115 116 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 112 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
136 137 138 139 140 141 142 143 144 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 136 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 #{reflect_on_association(:group_memberships).klass.quoted_table_name}.#{connection.quote_column_name('group_id')}) = ?", groups.count). uniq end |
#shares_any_group(other) ⇒ Object
146 147 148 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 146 def shares_any_group(other) in_any_group(other.groups) end |