class Trailblazer::Macro::Policy::Pundit::Condition
Pundit::Condition
is invoked at runtime when iterating the pipe.
Public Class Methods
new(policy_class, action)
click to toggle source
# File lib/trailblazer/macro/pundit.rb, line 14 def initialize(policy_class, action) @policy_class, @action = policy_class, action end
Public Instance Methods
call((options), *)
click to toggle source
Instantiate the actual policy object, and call it.
# File lib/trailblazer/macro/pundit.rb, line 19 def call((options), *) policy = build_policy(options) # this translates to Pundit interface. result!(policy.send(@action), policy) end
Private Instance Methods
build_policy(options)
click to toggle source
# File lib/trailblazer/macro/pundit.rb, line 25 def build_policy(options) @policy_class.new(options[:current_user], options[:model]) end
result!(success, policy)
click to toggle source
# File lib/trailblazer/macro/pundit.rb, line 29 def result!(success, policy) data = { policy: policy } data[:message] = "Breach" if !success # TODO: how to allow messages here? Trailblazer::Operation::Result.new(success, data) end