コールバックを頻繁に使用するRailsアプリケーションがあります。そのため、複数のモデルで:after_createと:after_commitが呼び出される関数がかなりあります。
今のやり方が一番いいのかな。
基本的に、次のシナリオがあります。
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
したがって、モデルが更新されるたびにsecond_functionが呼び出され、関数自体によって更新される可能性があるため、関数が繰り返し呼び出されるため、全体が奇妙なデュアルブールチェックに依存していることがわかります。
全体として、コールバックを開始するたびに新しいブールチェックを導入する必要がある場合につながります。それは機能しますが、私はそれがエレガントだとは思いません。私は何が欠けていますか?