2

在扩展的特定类中ActiveRecord::Base,每当创建这个对象时,我都需要更新一个不同的 ActiveRecord 对象。覆盖该save方法并在保存中执行以下操作是否安全?

def save
  super
  other = self.other
  other.name = self.name
  other.save!
end

我担心潜在的交易相关问题。我假设这将是 1 笔交易,如果任何部分失败,一切都会回滚?

4

1 回答 1

14

是否有特殊原因为什么您不使用为此目的提供的挂钩?

你有after_create, after_save, after_update, before_create, before_save, before_update- 和其他一堆。其中一个不合适吗?

实际上,鉴于您所说的,这听起来before_save就是您想要的,因为您可以捕获在保存第二个模型时发生的任何错误并防止第一个模型被保存(通过从before_save调用中返回 false )。

于 2012-11-20T09:15:05.783 回答