Module: Groupify::ActiveRecord::Group

Extended by:
ActiveSupport::Concern
Defined in:
lib/groupify/adapter/active_record/group.rb

Overview

Usage:

 class Group < ActiveRecord::Base
     groupify :group, members: [:users]
     ...
 end

group.add(member)

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#add(*args) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/groupify/adapter/active_record/group.rb', line 29

def add(*args)
  opts = args.extract_options!
  membership_type = opts[:as]
  members = args.flatten
  return unless members.present?

  __send__(:clear_association_cache)

  members.each do |member|
    member.groups << self unless member.groups.include?(self)
    if membership_type
      member.group_memberships_as_member.where(group_id: id, group_type: self.class.model_name.to_s, membership_type: membership_type).first_or_create!
    end
    member.__send__(:clear_association_cache)
  end
end

#member_classesObject



25
26
27
# File 'lib/groupify/adapter/active_record/group.rb', line 25

def member_classes
  self.class.member_classes
end

#merge!(source) ⇒ Object

Merge a source group into this group.



47
48
49
# File 'lib/groupify/adapter/active_record/group.rb', line 47

def merge!(source)
  self.class.merge!(source, self)
end