class SimpleAction::Service
Public Class Methods
new(params={})
click to toggle source
# File lib/simple_action/service.rb, line 38 def initialize(params={}) @raw_params = params @params = self.class.params_class.new(params) @initial_params_valid = nil @result = nil @has_run = false end
run(params = {})
click to toggle source
# File lib/simple_action/service.rb, line 15 def run(params = {}) instance = self.new(params) instance.mark_as_ran result = transaction do if instance.valid? outcome = instance.execute instance.errors.empty? ? outcome : nil end end instance.set_result(result) instance end
run!(params = {})
click to toggle source
# File lib/simple_action/service.rb, line 28 def run!(params = {}) response = run(params) if response.valid? response.result else raise ExecutionError, response.errors.to_s end end
Public Instance Methods
errors()
click to toggle source
# File lib/simple_action/service.rb, line 54 def errors @params.errors end
execute()
click to toggle source
# File lib/simple_action/service.rb, line 58 def execute raise ImplementationError, "subclasses must implement 'execute' method." end
mark_as_ran()
click to toggle source
# File lib/simple_action/service.rb, line 79 def mark_as_ran @has_run = true end
params()
click to toggle source
# File lib/simple_action/service.rb, line 46 def params @params end
persisted?()
click to toggle source
# File lib/simple_action/service.rb, line 62 def persisted? false end
result()
click to toggle source
# File lib/simple_action/service.rb, line 70 def result @result end
Also aliased as: value
set_result(result = nil)
click to toggle source
# File lib/simple_action/service.rb, line 75 def set_result(result = nil) @result = result end
success?()
click to toggle source
# File lib/simple_action/service.rb, line 66 def success? valid? && @has_run end
valid?()
click to toggle source
# File lib/simple_action/service.rb, line 50 def valid? initial_params_valid? && errors.empty? end
Private Instance Methods
initial_params_valid?()
click to toggle source
# File lib/simple_action/service.rb, line 84 def initial_params_valid? if @initial_params_valid.nil? @initial_params_valid = @params.valid? else @initial_params_valid end end