Class: Groupify::ActiveRecord::NamedGroupCollection
- Inherits:
-
Set
- Object
- Set
- Groupify::ActiveRecord::NamedGroupCollection
- Defined in:
- lib/groupify/adapter/active_record/named_group_collection.rb
Instance Method Summary collapse
- #add(named_group, opts = {}) ⇒ Object (also: #push, #<<)
-
#as(membership_type) ⇒ Object
Criteria to filter by membership type.
- #clear ⇒ Object (also: #delete_all, #destroy_all)
- #delete(*args) ⇒ Object
- #destroy(*args) ⇒ Object
- #include?(named_group, opts = {}) ⇒ Boolean
-
#initialize(member) ⇒ NamedGroupCollection
constructor
A new instance of NamedGroupCollection.
- #merge(*args) ⇒ Object (also: #concat)
Constructor Details
#initialize(member) ⇒ NamedGroupCollection
Returns a new instance of NamedGroupCollection.
5 6 7 8 9 10 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 5 def initialize(member) @member = member @named_group_memberships = member.group_memberships.named @group_names = @named_group_memberships.pluck(:group_name).map(&:to_sym) super(@group_names) end |
Instance Method Details
#add(named_group, opts = {}) ⇒ Object Also known as: push, <<
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 12 def add(named_group, opts={}) named_group = named_group.to_sym membership_type = opts[:as] if @member.new_record? @member.group_memberships.build(group_name: named_group, membership_type: nil) else @member.transaction do @member.group_memberships.where(group_name: named_group, membership_type: nil).first_or_create! end end if membership_type if @member.new_record? @member.group_memberships.build(group_name: named_group, membership_type: membership_type) else @member.group_memberships.where(group_name: named_group, membership_type: membership_type).first_or_create! end end super(named_group) end |
#as(membership_type) ⇒ Object
Criteria to filter by membership type
80 81 82 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 80 def as(membership_type) @named_group_memberships.as(membership_type).pluck(:group_name).map(&:to_sym) end |
#clear ⇒ Object Also known as: delete_all, destroy_all
71 72 73 74 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 71 def clear @named_group_memberships.delete_all super end |
#delete(*args) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 57 def delete(*args) opts = args. named_groups = args.flatten.compact remove(named_groups, :delete_all, opts) end |
#destroy(*args) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 64 def destroy(*args) opts = args. named_groups = args.flatten.compact remove(named_groups, :destroy_all, opts) end |
#include?(named_group, opts = {}) ⇒ Boolean
48 49 50 51 52 53 54 55 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 48 def include?(named_group, opts={}) named_group = named_group.to_sym if opts[:as] as(opts[:as]).include?(named_group) else super(named_group) end end |
#merge(*args) ⇒ Object Also known as: concat
38 39 40 41 42 43 44 |
# File 'lib/groupify/adapter/active_record/named_group_collection.rb', line 38 def merge(*args) opts = args. named_groups = args.flatten named_groups.each do |named_group| add(named_group, opts) end end |