在扩展 ActiveRecord::Base
的特定类中,每当创建此对象时,我都需要更新不同的 ActiveRecord 对象。覆盖 save
方法并在保存中执行以下操作是否安全?
def save
super
other = self.other
other.name = self.name
other.save!
end
我担心潜在的交易相关问题。我假设这都是 1 个事务,如果任何部分失败,一切都会回滚?
最佳答案
是否有特殊原因导致您不使用为此目的提供的钩子(Hook)?
您有after_create
、after_save
、after_update
、before_create
、before_save
>、before_update
- 以及其他一些。其中一个不合适吗?
事实上,鉴于您所说的,听起来 before_save
就是您想要的,因为您可以捕获保存第二个模型时发生的任何错误并阻止保存第一个模型(通过从 before_save
调用返回 false)。
关于ruby-on-rails - 可以安全地覆盖 ActiveRecord 中的保存方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469823/