Sha256: 0203e3069fb82d90d80c599970019d9b20044d3680ba801a8051f86c7d55af61
Contents?: true
Size: 1004 Bytes
Versions: 1
Compression:
Stored size: 1004 Bytes
Contents
module Trailblazer::Rails module Controller def run(operation, params=self.params, *dependencies) result = operation.({params: _run_params(params) }.merge(*_run_runtime_options(*dependencies))) @model = result[:model] @form = Trailblazer::Rails::Form.new( result[ "contract.default" ], @model.class ) yield(result) if result.success? && block_given? @_result = result end 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) [_run_options(options), *dependencies] end # Override this to inject dependencies such as "current_user" # into the runtime options. def _run_options(options) options end module Result def result @_result end end include Result end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
trailblazer-rails-2.0.0 | lib/trailblazer/rails/controller.rb |