Class: StrongActions::Decision
- Inherits:
-
Object
- Object
- StrongActions::Decision
- Defined in:
- lib/strong_actions/decision.rb
Instance Method Summary collapse
- #call(role, controller_path, action_name = nil, params = {}) ⇒ Object
-
#initialize(target) ⇒ Decision
constructor
A new instance of Decision.
- #role_object_for(role) ⇒ Object
Constructor Details
#initialize(target) ⇒ Decision
Returns a new instance of Decision.
4 5 6 |
# File 'lib/strong_actions/decision.rb', line 4 def initialize(target) @target = target end |
Instance Method Details
#call(role, controller_path, action_name = nil, params = {}) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/strong_actions/decision.rb', line 8 def call(role, controller_path, action_name = nil, params = {}) role_definition = StrongActions.config.role_definition(role) return true unless role_definition controller_value = role_definition[controller_path] return true if controller_value.nil? if controller_value.is_a?(Hash) action_name ||= 'index' action_value = controller_value[action_name] else action_value = controller_value end return true if action_value.nil? action_value = [action_value] unless action_value.is_a?(Array) action_value.each do |definition| next if definition === true return false unless definition role_object = role_object_for(role) return false unless role_object.instance_eval(definition) end true end |
#role_object_for(role) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/strong_actions/decision.rb', line 35 def role_object_for(role) begin return @target.instance_eval(role) rescue NameError raise "role #{role} is not defined in controller" end end |