module Groupify::ActiveRecord::NamedGroupMember::ClassMethods

Public Instance Methods

as(membership_type) click to toggle source
# File lib/groupify/adapter/active_record/named_group_member.rb, line 65
def as(membership_type)
  joins(:group_memberships_as_member).where(group_memberships: {membership_type: membership_type})
end
in_all_named_groups(*named_groups) click to toggle source
# File lib/groupify/adapter/active_record/named_group_member.rb, line 82
def in_all_named_groups(*named_groups)
  named_groups.flatten!
  return none unless named_groups.present?

  joins(:group_memberships_as_member).
      group("#{quoted_table_name}.#{connection.quote_column_name('id')}").
      where(:group_memberships => {:group_name => named_groups}).
      having("COUNT(DISTINCT #{reflect_on_association(:group_memberships_as_member).klass.quoted_table_name}.#{connection.quote_column_name('group_name')}) = ?", named_groups.count).
      distinct
end
in_any_named_group(*named_groups) click to toggle source
# File lib/groupify/adapter/active_record/named_group_member.rb, line 75
def in_any_named_group(*named_groups)
  named_groups.flatten!
  return none unless named_groups.present?

  joins(:group_memberships_as_member).where(group_memberships: {group_name: named_groups.flatten}).distinct
end
in_named_group(named_group) click to toggle source
# File lib/groupify/adapter/active_record/named_group_member.rb, line 69
def in_named_group(named_group)
  return none unless named_group.present?

  joins(:group_memberships_as_member).where(group_memberships: {group_name: named_group}).distinct
end
in_only_named_groups(*named_groups) click to toggle source
# File lib/groupify/adapter/active_record/named_group_member.rb, line 93
def in_only_named_groups(*named_groups)
  named_groups.flatten!
  return none unless named_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_name')}) = ?", named_groups.count).
      distinct
end
shares_any_named_group(other) click to toggle source
# File lib/groupify/adapter/active_record/named_group_member.rb, line 103
def shares_any_named_group(other)
  in_any_named_group(other.named_groups.to_a)
end