我有两个模型
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)。使用上面的解决方案,这意味着每次创建事务都需要调用数据库来检查合约是否处于活动状态。有没有替代方案?
如果合约有数千笔交易,这意味着这将被调用数千次,尽管它只与第一笔交易相关。
在一般意义上,什么是实现回调的优雅方式。这看起来很乱?