lib/trailblazer/rails/controller.rb in trailblazer-rails-1.0.11 vs lib/trailblazer/rails/controller.rb in trailblazer-rails-2.0.0

- old
+ new

@@ -1,45 +1,33 @@ module Trailblazer::Rails module Controller - def run(operation, params = self.params, *dependencies) - result = operation.( - _run_params(params), - *_run_runtime_options(*dependencies) - ) + def run(operation, params=self.params, *dependencies) + result = operation.({params: _run_params(params) }.merge(*_run_runtime_options(*dependencies))) - _assign_trb_ivars(result) + @model = result[:model] + @form = Trailblazer::Rails::Form.new( result[ "contract.default" ], @model.class ) yield(result) if result.success? && block_given? @_result = result end - private - + private # Override to tweak params. Not recommended. # Use a deserializer instead. def _run_params(params) params end # This is where we can inject Dry.RB containers and the like via dependencies. - def _run_runtime_options(options = {}, *dependencies) + def _run_runtime_options(options={}, *dependencies) [_run_options(options), *dependencies] end # Override this to inject dependencies such as "current_user" # into the runtime options. def _run_options(options) options - end - - def _assign_trb_ivars(result) - @model = result["model"] - @form = _wrap_with_trb_form(result["contract.default"], @model.class) - end - - def _wrap_with_trb_form(form, model) - Trailblazer::Rails::Form.new(form, model) end module Result def result @_result