lib/snfoil/policy.rb in snfoil-policy-1.0.1 vs lib/snfoil/policy.rb in snfoil-policy-1.1.0

- old
+ new

@@ -33,32 +33,31 @@ end def permission(authorization_type, entity_class = nil, with: nil, &block) @snfoil_permissions ||= {} @snfoil_permissions[authorization_type] ||= {} - if @snfoil_permissions[authorization_type][entity_class] - raise SnFoil::Policy::Error, - "permission #{entity_class} #{authorization_type} already defined for #{name}" - end - @snfoil_permissions[authorization_type][entity_class] = build_permission_exec(with, block) define_permission_method(authorization_type) end def inherited(subclass) super - instance_variables.grep(/@snfoil_.+/).each do |i| - subclass.instance_variable_set(i, instance_variable_get(i).dup) + permissions = instance_variable_get(:@snfoil_permissions) || {} + inherited_permissions = {} + permissions.each_key do |action| + inherited_permissions[action] = permissions[action].dup end + + subclass.instance_variable_set(:@snfoil_permissions, inherited_permissions) end end attr_reader :record, :entity attr_accessor :options - def initialize(entity, record, options = {}) + def initialize(entity, record, **options) @record = record @entity = entity @options = options end @@ -68,10 +67,10 @@ # # @since 0.1.0 class Scope attr_reader :scope, :entity - def initialize(scope, entity = nil) + def initialize(entity, scope) @entity = entity @scope = scope end def resolve