lib/reactor/models/concerns/eventable.rb in reactor-0.1.0 vs lib/reactor/models/concerns/eventable.rb in reactor-0.1.1

- old
+ new

@@ -1,11 +1,11 @@ module Reactor::Eventable extend ActiveSupport::Concern included do - after_create :schedule_events - after_update :reschedule_events + after_commit :schedule_events, if: :persisted?, on: :create + after_commit :reschedule_events, if: :persisted?, on: :update end def publish(name, data = {}) Reactor::Event.publish(name, data.merge(actor: self) ) end @@ -22,18 +22,19 @@ private def schedule_events self.class.events.each do |name, data| - Reactor::Event.delay.publish name, data.merge( - at: send(data[:at]), actor: self + data = data.merge( + at: ( data[:at] ? send(data[:at]) : nil), actor: self ).except(:watch) + Reactor::Event.delay.publish name, data end end def reschedule_events self.class.events.each do |name, data| - if send("#{data[:watch] || data[:at]}_changed?") + if data[:at] && send("#{data[:watch] || data[:at]}_changed?") Reactor::Event.delay.reschedule name, at: send(data[:at]), actor: self, was: send("#{data[:at]}_was") end \ No newline at end of file