module Groupify::Mongoid::GroupMember

Usage:

class User
  include Mongoid::Document

  acts_as_group_member
  ...
end

user.groups << group

Public Instance Methods

as(membership_type) click to toggle source
# File lib/groupify/adapter/mongoid/group_member.rb, line 20
def as(membership_type)
  return self unless membership_type
  group_ids = base.group_memberships.as(membership_type).first.group_ids

  if group_ids.present?
    self.and(:id.in => group_ids)
  else
    self.and(:id => nil)
  end
end
delete(*args) click to toggle source
Calls superclass method
# File lib/groupify/adapter/mongoid/group_member.rb, line 35
def delete(*args)
  opts = args.extract_options!
  groups = args.flatten


  if opts[:as]
    base.group_memberships.as(opts[:as]).each do |membership|
      membership.groups.delete(*groups)
    end
  else
    super(*groups)
  end
end
destroy(*args) click to toggle source
# File lib/groupify/adapter/mongoid/group_member.rb, line 31
def destroy(*args)
  delete(*args)
end
in_all_groups?(*args) click to toggle source
# 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) click to toggle source
# 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={}) click to toggle source
# 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) click to toggle source
# 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={}) click to toggle source
# 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