Class: Trailblazer::V1_1::Operation
- Inherits:
-
Object
- Object
- Trailblazer::V1_1::Operation
- Extended by:
- Builder, Uber::InheritableAttr
- Includes:
- Setup
- Defined in:
- lib/trailblazer/1.1/operation.rb,
lib/trailblazer/1.1/operation/model.rb,
lib/trailblazer/1.1/operation/resolver.rb,
lib/trailblazer/1.1/operation/model/dsl.rb,
lib/trailblazer/1.1/operation/model/external.rb
Defined Under Namespace
Modules: Builder, Callback, Collection, Controller, Deny, Model, Module, Policy, Representer, Resolver, Responder, Setup Classes: InvalidContract
Constant Summary collapse
- Dispatch =
TODO: deprecate this module.
Trailblazer::V1_1::Operation::Callback
Instance Attribute Summary collapse
-
#model ⇒ Object
readonly
Returns the value of attribute model.
Class Method Summary collapse
-
.[](*args) ⇒ Object
TODO: remove in 1.2.
-
.call(params) ⇒ Object
::call only returns the Operation instance (or whatever was returned from #validate).
-
.contract(constant = nil, &block) ⇒ Object
This is a DSL method.
-
.present(params) ⇒ Object
Runs #setup! but doesn’t process the operation.
-
.reject(*args) {|op| ... } ⇒ Object
Like ::run, but yield block when invalid.
-
.run(params, &block) ⇒ Object
Endpoint behaviour.
Instance Method Summary collapse
- #contract(*args) ⇒ Object
- #errors ⇒ Object
-
#initialize(params, options = {}) ⇒ Operation
constructor
A new instance of Operation.
-
#run ⇒ Object
Operation.run(body: “Fabulous!”) #=> [true, <Comment body: “Fabulous!”>].
- #valid? ⇒ Boolean
Methods included from Builder
builder_class, builder_class=, extended
Methods included from Setup
#assign_model!, #assign_params!, #build_model!, #model!, #params!, #setup!, #setup_model!, #setup_params!
Constructor Details
#initialize(params, options = {}) ⇒ Operation
Returns a new instance of Operation.
61 62 63 64 65 66 |
# File 'lib/trailblazer/1.1/operation.rb', line 61 def initialize(params, ={}) @options = @valid = true setup!(params) # assign/find the model end |
Instance Attribute Details
#model ⇒ Object (readonly)
Returns the value of attribute model.
75 76 77 |
# File 'lib/trailblazer/1.1/operation.rb', line 75 def model @model end |
Class Method Details
.[](*args) ⇒ Object
TODO: remove in 1.2.
37 38 39 40 |
# File 'lib/trailblazer/1.1/operation.rb', line 37 def [](*args) # TODO: remove in 1.2. warn "[Trailblazer] Operation[] is deprecated. Please use Operation.() and have a nice day." call(*args) end |
.call(params) ⇒ Object
::call only returns the Operation instance (or whatever was returned from #validate). This is useful in tests or in irb, e.g. when using Op as a factory and you already know it’s valid.
33 34 35 |
# File 'lib/trailblazer/1.1/operation.rb', line 33 def call(params) build_operation(params, raise_on_invalid: true).run.last end |
.contract(constant = nil, &block) ⇒ Object
This is a DSL method. Use ::contract_class and ::contract_class= for the explicit version.
Op.contract #=> returns contract class
Op.contract do .. end # defines contract
Op.contract CommentForm # copies (and subclasses) external contract.
Op.contract CommentForm do .. end # copies and extends contract.
52 53 54 55 56 57 |
# File 'lib/trailblazer/1.1/operation.rb', line 52 def contract(constant=nil, &block) return contract_class unless constant or block_given? self.contract_class= Class.new(constant) if constant contract_class.class_eval(&block) if block_given? end |
.present(params) ⇒ Object
Runs #setup! but doesn’t process the operation.
43 44 45 |
# File 'lib/trailblazer/1.1/operation.rb', line 43 def present(params) build_operation(params) end |
.reject(*args) {|op| ... } ⇒ Object
Like ::run, but yield block when invalid.
25 26 27 28 29 |
# File 'lib/trailblazer/1.1/operation.rb', line 25 def reject(*args) res, op = run(*args) yield op if res == false op end |
.run(params, &block) ⇒ Object
Endpoint behaviour
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/trailblazer/1.1/operation.rb', line 13 def run(params, &block) # Endpoint behaviour res, op = build_operation(params).run if block_given? yield op if res return op end [res, op] end |
Instance Method Details
#contract(*args) ⇒ Object
85 86 87 |
# File 'lib/trailblazer/1.1/operation.rb', line 85 def contract(*args) contract!(*args) end |
#errors ⇒ Object
77 78 79 |
# File 'lib/trailblazer/1.1/operation.rb', line 77 def errors contract.errors end |
#run ⇒ Object
Operation.run(body: “Fabulous!”) #=> [true, <Comment body: “Fabulous!”>]
69 70 71 72 73 |
# File 'lib/trailblazer/1.1/operation.rb', line 69 def run process(@params) [valid?, self] end |
#valid? ⇒ Boolean
81 82 83 |
# File 'lib/trailblazer/1.1/operation.rb', line 81 def valid? @valid end |