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



61
62
63
# File 'lib/groupify/adapter/active_record/named_group_member.rb', line 61

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

#in_all_named_groups(*named_groups) ⇒ Object



78
79
80
81
82
83
84
85
86
87
# File 'lib/groupify/adapter/active_record/named_group_member.rb', line 78

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

#in_any_named_group(*named_groups) ⇒ Object



71
72
73
74
75
76
# File 'lib/groupify/adapter/active_record/named_group_member.rb', line 71

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



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

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



89
90
91
92
93
94
95
96
97
# File 'lib/groupify/adapter/active_record/named_group_member.rb', line 89

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

#shares_any_named_group(other) ⇒ Object



99
100
101
# File 'lib/groupify/adapter/active_record/named_group_member.rb', line 99

def shares_any_named_group(other)
  in_any_named_group(other.named_groups.to_a)
end