Module: Groupify::ActiveRecord::NamedGroupMember::ClassMethods

Defined in:
lib/groupify/adapter/active_record/named_group_member.rb

Instance Method Summary collapse

Instance Method Details

#as(membership_type) ⇒ Object



65
66
67
# File 'lib/groupify/adapter/active_record/named_group_member.rb', line 65

def as(membership_type)
  joins(:group_memberships).where(group_memberships: {membership_type: membership_type})
end

#in_all_named_groups(*named_groups) ⇒ Object



82
83
84
85
86
87
88
89
90
91
# 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).
      group("#{quoted_table_name}.#{connection.quote_column_name('id')}").
      where(:group_memberships => {:group_name => named_groups}).
      having("COUNT(DISTINCT #{reflect_on_association(:group_memberships).klass.quoted_table_name}.#{connection.quote_column_name('group_name')}) = ?", named_groups.count).
      uniq
end

#in_any_named_group(*named_groups) ⇒ Object



75
76
77
78
79
80
# 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).where(group_memberships: {group_name: named_groups.flatten}).uniq
end

#in_named_group(named_group) ⇒ Object



69
70
71
72
73
# 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).where(group_memberships: {group_name: named_group}).uniq
end

#in_only_named_groups(*named_groups) ⇒ Object



93
94
95
96
97
98
99
100
101
# 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).
      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_name')}) = ?", named_groups.count).
      uniq
end

#shares_any_named_group(other) ⇒ Object



103
104
105
# 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