Method: Operatic::ClassMethods#data_attr

Defined in:
lib/operatic.rb

#data_attr(*attrs) ⇒ Object

Define a class-specific Data subclass with the named accessors added via Data.define.

Examples:

class SayHello
  include Operatic

  data_attr :message

  def call
    success!(message: "Hello #{@name}")
  end
end

result = SayHello.call(name: 'Dave')
result.class     # => Operatic::Success
result.message   # => "Hello Dave"
result[:message] # => "Hello Dave"
result.to_h      # => {:message=>"Hello Dave"}

Parameters:

  • attrs (Array<Symbol>)

    a list of convenience data accessors to define on the Result.



63
64
65
# File 'lib/operatic.rb', line 63

def data_attr(*attrs)
  @data_class = Data.define(*attrs)
end