Class: Rolify::Adapter::ActiveRecord
- Inherits:
-
Base
- Object
- Base
- Rolify::Adapter::ActiveRecord
show all
- Defined in:
- lib/rolify/adapters/active_record.rb
Instance Method Summary
collapse
-
#add(relation, role) ⇒ Object
-
#exists?(relation, column) ⇒ Boolean
-
#find(relation, role_name, resource) ⇒ Object
-
#find_or_create_by(role_name, resource_type = nil, resource_id = nil) ⇒ Object
-
#in(relation, roles) ⇒ Object
-
#remove(relation, role_name, resource = nil) ⇒ Object
-
#resources_find(roles_table, relation, role_name) ⇒ Object
-
#where(relation, args) ⇒ Object
Methods inherited from Base
#initialize, #role_class
Instance Method Details
#add(relation, role) ⇒ Object
20
21
22
|
# File 'lib/rolify/adapters/active_record.rb', line 20
def add(relation, role)
relation.role_ids |= [role.id]
end
|
#exists?(relation, column) ⇒ Boolean
41
42
43
|
# File 'lib/rolify/adapters/active_record.rb', line 41
def exists?(relation, column)
relation.where("#{column} IS NOT NULL")
end
|
#find(relation, role_name, resource) ⇒ Object
6
7
8
9
|
# File 'lib/rolify/adapters/active_record.rb', line 6
def find(relation, role_name, resource)
query, values = build_query(role_name, resource)
relation.where(query, *values)
end
|
#find_or_create_by(role_name, resource_type = nil, resource_id = nil) ⇒ Object
16
17
18
|
# File 'lib/rolify/adapters/active_record.rb', line 16
def find_or_create_by(role_name, resource_type = nil, resource_id = nil)
role_class.find_or_create_by_name_and_resource_type_and_resource_id(role_name, resource_type, resource_id)
end
|
#in(relation, roles) ⇒ Object
37
38
39
|
# File 'lib/rolify/adapters/active_record.rb', line 37
def in(relation, roles)
relation.where("#{role_class.to_s.tableize}.id IN (?) AND ((resource_id = #{relation.table_name}.id) OR (resource_id IS NULL))", roles)
end
|
#remove(relation, role_name, resource = nil) ⇒ Object
24
25
26
27
28
29
|
# File 'lib/rolify/adapters/active_record.rb', line 24
def remove(relation, role_name, resource = nil)
role = relation.where(:name => role_name)
role = role.where(:resource_type => (resource.is_a?(Class) ? resource.to_s : resource.class.name)) if resource
role = role.where(:resource_id => resource.id) if resource && !resource.is_a?(Class)
relation.delete(role) if role
end
|
#resources_find(roles_table, relation, role_name) ⇒ Object
31
32
33
34
35
|
# File 'lib/rolify/adapters/active_record.rb', line 31
def resources_find(roles_table, relation, role_name)
resources = relation.joins("INNER JOIN \"#{roles_table}\" ON \"#{roles_table}\".\"resource_type\" = '#{relation.to_s}'")
resources = resources.where("#{roles_table}.name = ? AND #{roles_table}.resource_type = ?", role_name, relation.to_s)
resources
end
|
#where(relation, args) ⇒ Object
11
12
13
14
|
# File 'lib/rolify/adapters/active_record.rb', line 11
def where(relation, args)
conditions, values = build_conditions(relation, args)
relation.where(conditions, *values)
end
|