Module: Groupify::ActiveRecord::GroupMember::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#as(membership_type) ⇒ Object



98
99
100
# File 'lib/groupify/adapter/active_record/group_member.rb', line 98

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

#group_class_nameObject



95
# File 'lib/groupify/adapter/active_record/group_member.rb', line 95

def group_class_name; @group_class_name ||= 'Group'; end

#group_class_name=(klass) ⇒ Object



96
# File 'lib/groupify/adapter/active_record/group_member.rb', line 96

def group_class_name=(klass);  @group_class_name = klass; end

#in_all_groups(*groups) ⇒ Object



115
116
117
118
119
120
121
122
123
124
# File 'lib/groupify/adapter/active_record/group_member.rb', line 115

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(group_memberships.group_id) = #{groups.count}").
      uniq
end

#in_any_group(*groups) ⇒ Object



108
109
110
111
112
113
# File 'lib/groupify/adapter/active_record/group_member.rb', line 108

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



102
103
104
105
106
# File 'lib/groupify/adapter/active_record/group_member.rb', line 102

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



126
127
128
129
130
131
132
133
134
# File 'lib/groupify/adapter/active_record/group_member.rb', line 126

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 group_memberships.group_id) = #{groups.count}").
      uniq
end

#shares_any_group(other) ⇒ Object



136
137
138
# File 'lib/groupify/adapter/active_record/group_member.rb', line 136

def shares_any_group(other)
  in_any_group(other.groups)
end