Mam aplikację Rails, która używa wywołań zwrotnych dużo ... tak, że mam kilka funkcji, które są wywoływane: after_create i: after_commit w wielu modelach.Jak organizować złożone wywołania zwrotne w Railsach?
Zastanawiam się, czy sposób, w jaki teraz to robię, 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
więc można zobaczyć całość zależy od jakichś dziwnych podwójnych kontroli logicznych bo inaczej second_function jest uzyskiwanie wywoływana za każdym razem model jest aktualizowany i może być aktualizowana przez samą funkcję, więc funkcja jest wywoływana w sposób powtarzalny.
Ogólnie rzecz biorąc prowadzi mnie to do przypadku, w którym muszę wprowadzić nową weryfikację boolowską dla każdego wywołania zwrotnego, aby odpalić. Działa, ale nie uważam tego za elegancki. czego mi brakuje?
Można to zrobić before_save? – cpuguy83