Module: Groupify::Mongoid::GroupMember

Extended by:
ActiveSupport::Concern
Includes:
MemberScopedAs
Defined in:
lib/groupify/adapter/mongoid/group_member.rb

Overview

Usage:

class User
  include Mongoid::Document

  acts_as_group_member
  ...
end

user.groups << group

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#in_all_groups?(*args) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
90
91
92
# File 'lib/groupify/adapter/mongoid/group_member.rb', line 87

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

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

#in_any_group?(*args) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
80
81
82
83
84
85
# File 'lib/groupify/adapter/mongoid/group_member.rb', line 77

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)


73
74
75
# File 'lib/groupify/adapter/mongoid/group_member.rb', line 73

def in_group?(group, opts={})
  groups.as(opts[:as]).include?(group)
end

#in_only_groups?(*args) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
97
98
99
# File 'lib/groupify/adapter/mongoid/group_member.rb', line 94

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)


101
102
103
# File 'lib/groupify/adapter/mongoid/group_member.rb', line 101

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