私は2つのモデルを持っています
class Contract < ActiveRecord::Base
has_many :transactions
end
class Transaction < ActiveRecord::Base
belongs_to :contract
after_create :mark_contract_as_live
def mark_contract_as_live
k = self.contract
if !k.is_live
k.update_attributes(:is_live => true)
end
end
end
is_live は、契約モデルのブール フィールドです。コントラクトは、作成時にデフォルトで非ライブ (is_live => false) に設定されます。最初のトランザクションが記録されると、ライブとしてマークされます (is_live => true)。上記のソリューションでは、トランザクションを作成するたびに、データベースを呼び出してコントラクトが有効かどうかを確認する必要があります。これに代わるものはありますか?
コントラクトに数千のトランザクションがある場合、最初のトランザクションにのみ関連しますが、これは何千回も呼び出されることを意味します。
一般的な意味で、コールバックを実装するエレガントな方法は何ですか。これは乱雑に見えますか?