class Abilities::Definitions
Attributes
user[R]
Public Class Methods
new(user, &block)
click to toggle source
# File lib/abilities/definitions.rb, line 6 def initialize(user, &block) @user = user Proxy.new self, &block end
Public Instance Methods
add(actions, resources, policy)
click to toggle source
# File lib/abilities/definitions.rb, line 34 def add(actions, resources, policy) unless actions.is_a?(Array) actions = [actions] end unless resources.is_a?(Array) resources = [resources] end resources.each do |resource| actions.each do |action| id = normalize_id(resource) registry[id] ||= {} registry[id][action] = policy end end end
can?(action, resource)
click to toggle source
# File lib/abilities/definitions.rb, line 11 def can?(action, resource) id = normalize_id(resource) if id != :any && can?(action, :any) true elsif actions = registry[id] if policy = (actions[action] || actions[:manage]) if policy.is_a?(Proc) user.instance_exec resource, &policy else policy end else false end else false end end
cannot?(*args)
click to toggle source
# File lib/abilities/definitions.rb, line 30 def cannot?(*args) !can?(*args) end
Private Instance Methods
normalize_id(resource)
click to toggle source
# File lib/abilities/definitions.rb, line 56 def normalize_id(resource) case resource when :any resource when Class resource.name.underscore.to_sym else resource.class.name.underscore.to_sym end end
registry()
click to toggle source
# File lib/abilities/definitions.rb, line 52 def registry @registry ||= {} end