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

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

Instance Method Summary collapse

Instance Method Details

#group_class_nameObject



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

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

#group_class_name=(klass) ⇒ Object



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

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

#in_all_groups(*groups) ⇒ Object



211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/groupify/adapter/active_record.rb', line 211

def in_all_groups(*groups)
  if groups.present?
    groups = groups.flatten

    joins(:group_memberships).
    group(:"group_memberships.member_id").
    where(:group_memberships => {:group_id => groups.map(&:id)}).
    having("COUNT(group_memberships.group_id) = #{groups.count}").
    uniq
  else
    none
  end
end

#in_any_group(*groups) ⇒ Object



207
208
209
# File 'lib/groupify/adapter/active_record.rb', line 207

def in_any_group(*groups)
  groups.present? ? joins(:group_memberships).where(:group_memberships => {:group_id => groups.flatten.map(&:id)}).uniq : none
end

#in_group(group) ⇒ Object



203
204
205
# File 'lib/groupify/adapter/active_record.rb', line 203

def in_group(group)
  group.present? ? joins(:group_memberships).where(:group_memberships => {:group_id => group.id}).uniq : none
end

#shares_any_group(other) ⇒ Object



225
226
227
# File 'lib/groupify/adapter/active_record.rb', line 225

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