Class: Rolify::Adapter::Mongoid

Inherits:
Base
  • Object
show all
Defined in:
lib/rolify/adapters/mongoid.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize, #role_class

Constructor Details

This class inherits a constructor from Rolify::Adapter::Base

Instance Method Details

#add(relation, role) ⇒ Object



26
27
28
# File 'lib/rolify/adapters/mongoid.rb', line 26

def add(relation, role)
  relation.roles << role
end

#exists?(relation, column) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/rolify/adapters/mongoid.rb', line 53

def exists?(relation, column)
  relation.where(column.to_sym.ne => nil)
end

#find(relation, role_name, resource) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/rolify/adapters/mongoid.rb', line 6

def find(relation, role_name, resource)
  query = build_query(role_name, resource)
  query.each do |condition|
    criteria = relation.where(condition)
    return criteria.all if !criteria.empty?
  end
  []
end

#find_or_create_by(role_name, resource_type = nil, resource_id = nil) ⇒ Object



20
21
22
23
24
# File 'lib/rolify/adapters/mongoid.rb', line 20

def find_or_create_by(role_name, resource_type = nil, resource_id = nil)
  self.role_class.find_or_create_by(:name => role_name, 
                                    :resource_type => resource_type, 
                                    :resource_id => resource_id)
end

#in(resources, roles) ⇒ Object



47
48
49
50
51
# File 'lib/rolify/adapters/mongoid.rb', line 47

def in(resources, roles)
  return [] if resources.empty? || roles.empty?
  resources.delete_if { |resource| (resource.applied_roles && roles).empty? }
  resources
end

#remove(relation, role_name, resource = nil) ⇒ Object



30
31
32
33
34
35
# File 'lib/rolify/adapters/mongoid.rb', line 30

def remove(relation, role_name, resource = nil)
  role = { :name => role_name }
  role.merge!({:resource_type => (resource.is_a?(Class) ? resource.to_s : resource.class.name)}) if resource
  role.merge!({ :resource_id => resource.id }) if resource && !resource.is_a?(Class)
  relation.where(role).destroy_all
end

#resources_find(roles_table, relation, role_name) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/rolify/adapters/mongoid.rb', line 37

def resources_find(roles_table, relation, role_name)
  roles = roles_table.classify.constantize.where(:name => role_name, :resource_type => relation.to_s)
  resources = []
  roles.each do |role|
    return relation.all if role.resource_id.nil?
    resources << role.resource
  end
  resources
end

#where(relation, args) ⇒ Object



15
16
17
18
# File 'lib/rolify/adapters/mongoid.rb', line 15

def where(relation, args)
  conditions = build_conditions(relation, args)
  relation.any_of(*conditions)
end