实例和类的 ActiveRecord 事务块有什么区别?

Ven*_* Ch 5 ruby activerecord transactions ruby-on-rails

Active Record Transactions在我当前的任务中使用。我能够以下面提到的两种方式完成我的工作。但我不清楚有什么区别,transactioninstanceclass.

我已经浏览了 Rails API,但没有注意到任何差异。

以下两种transaction方法用法有什么区别?

Account.transaction do
  balance.save!
  account.save!
end

balance.transaction do
  balance.save!
  account.save!
end
Run Code Online (Sandbox Code Playgroud)

提前致谢!

mro*_*ues 9

没有区别,实例方法只是将执行委托给类方法。这是代码:

def transaction(options = {}, &block)
  self.class.transaction(options, &block)
end
Run Code Online (Sandbox Code Playgroud)

  • 没问题!以后,如果你想检查任何方法的实现,只需使用这个:`balance.method(:transaction).source_location`和`Account.method(:transaction).source_location`;您将收到位置,只需打开文件并检查它是如何实现的。 (5认同)