Module: Rdux

Defined in:
lib/rdux.rb,
lib/rdux/engine.rb,
lib/rdux/result.rb,
lib/rdux/version.rb,
lib/rdux/sanitize.rb,
app/models/rdux/action.rb,
app/models/rdux/actionable.rb,
app/models/rdux/failed_action.rb

Defined Under Namespace

Modules: Actionable, Sanitize Classes: Action, Engine, FailedAction, Result

Constant Summary collapse

VERSION =
'0.9.0'

Class Method Summary collapse

Class Method Details

.dispatch(action_name, payload, opts = {}, meta: nil) ⇒ Object Also known as: perform



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rdux.rb', line 10

def dispatch(action_name, payload, opts = {}, meta: nil)
  (opts[:ars] || {}).each { |k, v| payload["#{k}_id"] = v.id }
  action = Action.new(name: action_name, up_payload: payload, meta:)
  sanitize(action)
  action.save!
  res = call_call_or_up_on_action(action, opts)
  assign_and_persist(res, action)
  return res if res.ok == false

  res.after_save&.call(res.action)
  res
end