ruby-on-rails - 可以安全地覆盖 ActiveRecord 中的保存方法吗?

标签 ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2 active-record-query

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

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

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

最佳答案

是否有特殊原因导致您不使用为此目的提供的钩子(Hook)?

您有after_createafter_saveafter_updatebefore_createbefore_save >、before_update - 以及其他一些。其中一个不合适吗?

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

关于ruby-on-rails - 可以安全地覆盖 ActiveRecord 中的保存方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469823/

相关文章:

ruby-on-rails - 未定义的方法 `render' !

ruby-on-rails - 如何进行数据库迁移以创建具有特定属性的表?

ruby-on-rails - 使用 RVM 升级到 Ruby 2.1.2 后出现 PaperTrail (paper_trail) 错误。未初始化常量 PaperTrail::Rails::Engine

ruby-on-rails - 将字符串转换为标题大小写

ruby-on-rails - 邀请好友邀请系统错误

ruby-on-rails-3 - 导轨 3 : Multiple has_one associations & seeding

ruby-on-rails - Rails 3 设计 401 未经授权的 ajax 调用

ruby-on-rails - rails : Dynamic Select with Active Record

ruby-on-rails - 将数据导出到 Ruby Rails 上的 CSV 文件

ruby-on-rails - 事件管理渲染编辑页面