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?

questionAnswers(1)

yourAnswerToTheQuestion