Jak zorganizować złożone wywołania zwrotne w Railsach?
Mam aplikację Rails, która często używa wywołań zwrotnych .. więc mam kilka funkcji wywoływanych: after_create i: after_commit w wielu modelach.
Zastanawiam się, czy sposób, w jaki to robię teraz, jest najlepszy.
Zasadniczo mam następujący scenariusz:
Class Parent < ActiveRecord::Base
has_many :children
after_create :first_function
after_commit :last_function
def first_function
if !self.processed?
self.children.create(:name => "Richard The Lion Heart")
self.processed = true
self.save!
end
end
def last_function
if self.processed?
if !self.processing?
self.process
self.save!
self.processing = true
self.save!
end
end
end
end
Widzicie więc, że cała rzecz zależy od dziwnych podwójnych testów boolowskich, ponieważ w przeciwnym razie funkcja second_function jest wywoływana za każdym razem, gdy model jest aktualizowany i może być aktualizowana przez samą funkcję, a więc funkcja jest wywoływana powtarzalnie.
Ogólnie prowadzi mnie do sprawy, w której muszę wprowadzić nowy test boolowski dla każdego wywołania zwrotnego, aby odpalić. Działa, ale nie uważam tego za elegancki. czego mi brakuje?