Class: Morpho::Operations::Base::Form
- Inherits:
-
Trailblazer::Operation
- Object
- Trailblazer::Operation
- Morpho::Operations::Base::Form
- Defined in:
- app/concepts/morpho/operations/base/form.rb
Overview
Base form operation
Instance Method Summary collapse
- #build_model!(_options) ⇒ Object
- #contract_class!(options) ⇒ Object
- #data!(options, params:) ⇒ Object
- #model_class!(options) ⇒ Object
- #params!(options) ⇒ Object
- #persist!(options, contract:) ⇒ Object
- #present!(options, model:) ⇒ Object
- #presenter_class!(options) ⇒ Object
- #validate!(options, model:, data:) ⇒ Object
Instance Method Details
#build_model!(_options) ⇒ Object
59 60 61 |
# File 'app/concepts/morpho/operations/base/form.rb', line 59 def build_model!(, **) raise NotImplementedError end |
#contract_class!(options) ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'app/concepts/morpho/operations/base/form.rb', line 48 def contract_class!(, **) contract_class = ['contract.class'] unless contract_class.is_a?(Class) && contract_class.ancestors .include?( ::Reform::Form ) raise ArgumentError, 'Supply a valid contract.class option' end end |
#data!(options, params:) ⇒ Object
22 23 24 |
# File 'app/concepts/morpho/operations/base/form.rb', line 22 def data!(, params:, **) ['data'] = params['data'].is_a?(Hash) ? params.fetch('data') : {} end |
#model_class!(options) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'app/concepts/morpho/operations/base/form.rb', line 26 def model_class!(, **) model_class = ['model.class'] unless model_class.is_a?(Class) && model_class.ancestors .include?( ::ActiveRecord::Base ) raise ArgumentError, 'Supply a valid model.class option' end end |
#params!(options) ⇒ Object
18 19 20 |
# File 'app/concepts/morpho/operations/base/form.rb', line 18 def params!(, **) ['params'] ||= {} end |
#persist!(options, contract:) ⇒ Object
71 72 73 74 75 76 |
# File 'app/concepts/morpho/operations/base/form.rb', line 71 def persist!(, contract:, **) contract.sync saved = contract.model.save raise Morpho::Exceptions::StandardError.new(errors: contract.errors) unless saved end |
#present!(options, model:) ⇒ Object
78 79 80 |
# File 'app/concepts/morpho/operations/base/form.rb', line 78 def present!(, model:, **) ['response'] = ['presenter.class'].represent(model) end |
#presenter_class!(options) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'app/concepts/morpho/operations/base/form.rb', line 37 def presenter_class!(, **) presenter_class = ['presenter.class'] unless presenter_class.is_a?(Class) && presenter_class.ancestors .include?( ::Grape::Entity ) raise ArgumentError, 'Supply a valid presenter.class option' end end |
#validate!(options, model:, data:) ⇒ Object
63 64 65 66 67 68 69 |
# File 'app/concepts/morpho/operations/base/form.rb', line 63 def validate!(, model:, data:, **) ['contract'] = ['contract.class'].new(model) valid = ['contract'].validate(data) raise Morpho::Exceptions::StandardError.new(errors: ['contract'].errors) unless valid end |