Module: Groupify::ActiveRecord::GroupMember

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

Overview

Usage:

class User < ActiveRecord::Base
    groupify :group_member
    ...
end

user.groups << group

Defined Under Namespace

Modules: ClassMethods, GroupAssociationExtensions

Instance Method Summary collapse

Instance Method Details

#in_all_groups?(*args) ⇒ Boolean

Returns:

  • (Boolean)


89
90
91
92
93
94
# File 'lib/groupify/adapter/active_record/group_member.rb', line 89

def in_all_groups?(*args)
  opts = args.extract_options!
  groups = args.flatten

  groups.to_set.subset? self.groups.as(opts[:as]).to_set
end

#in_any_group?(*args) ⇒ Boolean

Returns:

  • (Boolean)


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

def in_any_group?(*args)
  opts = args.extract_options!
  groups = args

  groups.flatten.each do |group|
    return true if in_group?(group, opts)
  end
  return false
end

#in_group?(group, opts = {}) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
72
73
74
75
76
77
# File 'lib/groupify/adapter/active_record/group_member.rb', line 69

def in_group?(group, opts={})
  criteria = {group_id: group.id}

  if opts[:as]
    criteria.merge!(membership_type: opts[:as])
  end

  group_memberships.exists?(criteria)
end

#in_only_groups?(*args) ⇒ Boolean

Returns:

  • (Boolean)


96
97
98
99
100
101
# File 'lib/groupify/adapter/active_record/group_member.rb', line 96

def in_only_groups?(*args)
  opts = args.extract_options!
  groups = args.flatten

  groups.to_set == self.groups.as(opts[:as]).to_set
end

#shares_any_group?(other, opts = {}) ⇒ Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/groupify/adapter/active_record/group_member.rb', line 103

def shares_any_group?(other, opts={})
  in_any_group?(other.groups, opts)
end