Module: Groupify::ActiveRecord::NamedGroupMember::ClassMethods
- Defined in:
- lib/groupify/adapter/active_record/named_group_member.rb
Instance Method Summary collapse
- #as(membership_type) ⇒ Object
- #in_all_named_groups(*named_groups) ⇒ Object
- #in_any_named_group(*named_groups) ⇒ Object
- #in_named_group(named_group) ⇒ Object
- #in_only_named_groups(*named_groups) ⇒ Object
- #shares_any_named_group(other) ⇒ Object
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 |