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
99 100 101 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 99 def as(membership_type) joins(:group_memberships_as_member).where(group_memberships: { membership_type: membership_type }) end |
#in_all_groups(*groups) ⇒ Object
116 117 118 119 120 121 122 123 124 125 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 116 def in_all_groups(*groups) groups = groups.flatten return none unless groups.present? joins(:group_memberships_as_member). group("#{quoted_table_name}.#{connection.quote_column_name('id')}"). where(group_memberships: {group_id: groups.map(&:id)}). having("COUNT(#{reflect_on_association(:group_memberships_as_member).klass.quoted_table_name}.#{connection.quote_column_name('group_id')}) = ?", groups.count). distinct end |
#in_any_group(*groups) ⇒ Object
109 110 111 112 113 114 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 109 def in_any_group(*groups) groups = groups.flatten return none unless groups.present? joins(:group_memberships_as_member).where(group_memberships: { group_id: groups.map(&:id) }).distinct end |
#in_group(group) ⇒ Object
103 104 105 106 107 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 103 def in_group(group) return none unless group.present? joins(:group_memberships_as_member).where(group_memberships: { group_id: group.id }).distinct end |
#in_only_groups(*groups) ⇒ Object
127 128 129 130 131 132 133 134 135 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 127 def in_only_groups(*groups) groups = groups.flatten return none unless groups.present? joins(:group_memberships_as_member). group("#{quoted_table_name}.#{connection.quote_column_name('id')}"). having("COUNT(DISTINCT #{reflect_on_association(:group_memberships_as_member).klass.quoted_table_name}.#{connection.quote_column_name('group_id')}) = ?", groups.count). distinct end |
#shares_any_group(other) ⇒ Object
137 138 139 |
# File 'lib/groupify/adapter/active_record/group_member.rb', line 137 def shares_any_group(other) in_any_group(other.groups) end |