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