Class: Trailblazer::Macro::Model::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/trailblazer/macro/model.rb

Instance Method Summary collapse

Instance Method Details

#call(ctx, params) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/trailblazer/macro/model.rb', line 34

def call(ctx, params)
  action        = ctx[:"model.action"]
  model_class   = ctx[:"model.class"]
  find_by_key   = ctx[:"model.find_by_key"]
  action        = :pass_through unless %i[new find_by].include?(action)

  send("#{action}!", model_class, params, ctx[:"model.action"], find_by_key)
end

#find_by!(model_class, params, action, find_by_key) ⇒ Object

Doesn’t throw an exception and will return false to divert to Left.



48
49
50
# File 'lib/trailblazer/macro/model.rb', line 48

def find_by!(model_class, params, action, find_by_key, *)
  model_class.find_by(find_by_key.to_sym => params[find_by_key])
end

#new!(model_class, params) ⇒ Object



43
44
45
# File 'lib/trailblazer/macro/model.rb', line 43

def new!(model_class, params, *)
  model_class.new
end

#pass_through!(model_class, params, action, find_by_key) ⇒ Object

Call any method on the model class and pass find_by_key, for example find(params).



53
54
55
# File 'lib/trailblazer/macro/model.rb', line 53

def pass_through!(model_class, params, action, find_by_key, *)
  model_class.send(action, params[find_by_key])
end