module Groupify::ActiveRecord::GroupMember::ClassMethods

Public Instance Methods

as(membership_type) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/groupify/adapter/active_record/group_member.rb, line 137
def shares_any_group(other)
  in_any_group(other.groups)
end