Skip to content

Commit

Permalink
Merge pull request #2 from FinalCAD/rails-5-finalcloud-update
Browse files Browse the repository at this point in the history
hack for retrieving already existing role for child child resources
  • Loading branch information
skopu committed Aug 17, 2018
2 parents 0dca98b + 3cb7e56 commit eab1c74
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
14 changes: 13 additions & 1 deletion lib/scoped_rolify/role.rb
@@ -1,5 +1,17 @@
module Rolify
module Role
def add_role(role_name, resource = nil)
role = self.class.adapter.find_or_create_by(role_name.to_s,
(resource.is_a?(Class) ? resource.to_s : resource.class.base_class.name if resource),
(resource.id if resource && !resource.is_a?(Class)))

if !roles.include?(role)
self.class.define_dynamic_method(role_name, resource) if Rolify.dynamic_shortcuts
self.class.adapter.add(self, role)
end
role
end
alias_method :grant, :add_role

def add_scope_role(role_name, resource)
ScopedRolify::Policy.new(self, resource).check!
Expand All @@ -25,7 +37,7 @@ def add_resourced_role(role_name, resource)
root_resource = resource.respond_to?(:root_resource) ? resource.send(resource.root_resource) : nil

if self.new_record?
role = self.class.adapter.role_class.new(name: role_name, resource: resource, root_resource: root_resource).tap do |role|
role = self.class.adapter.role_class.find_or_initialize_by(name: role_name, resource: resource, root_resource: root_resource).tap do |role|
self.roles << role
if Rolify.dynamic_shortcuts and !self.respond_to?("is_#{role_name}?".to_sym)
self.class.define_dynamic_method(role_name, resource)
Expand Down
2 changes: 1 addition & 1 deletion lib/scoped_rolify/version.rb
@@ -1,3 +1,3 @@
module ScopedRolify
VERSION = '0.0.8'
VERSION = '0.1.0'
end

0 comments on commit eab1c74

Please sign in to comment.