导致弃用警告的原因是:ActiveRecord :: Base.raise_in_transactional_callbacks =?

问题描述 投票:21回答:2

当我运行我的功能规范时,我收到此消息:

弃用警告:不推荐使用ActiveRecord :: Base.raise_in_transactional_callbacks =,无效,将在不更换的情况下删除。

我正在使用Rails 5.0.0.rc1,我不确定是什么抛出了这个弃用警告。

我在我的application.rb文件中有这个。我删除了它,弃用警告消失了:

config.active_record.raise_in_transactional_callbacks = true

我想知道这个弃用警告实际意味着什么,并知道是什么触发了这个弃用警告。

ruby-on-rails ruby
2个回答
34
投票

我相信这种行为是在4.1和4.2之间添加的,作为对rails 5中不再相关的问题的临时解决方案:

http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#error-handling-in-transaction-callbacks

目前,Active Record会抑制after_rollback或after_commit回调中引发的错误,并仅将其打印到日志中。在下一个版本中,将不再抑制这些错误。相反,错误将像其他Active Record回调一样正常传播。

定义after_rollback或after_commit回调时,您将收到有关此即将发生的更改的弃用警告。准备就绪后,您可以通过将以下配置添加到config / application.rb来选择新行为并删除弃用警告:

config.active_record.raise_in_transactional_callbacks = true

为了澄清,正如@pixelearth建议我在下面的评论不够明确/突出。在Rails 5及更高版本中删除config/application.rb中的行:

config.active_record.raise_in_transactional_callbacks = true


2
投票

在此处写这个以获得@R的更多可见性。 Gatherall的评论。

升级到5时我收到此警告不是因为我DID在application.rb中没有以下设置,而是因为我DID。

在rails 5中,从application.rb中删除以下行

config.active_record.raise_in_transactional_callbacks = true
© www.soinside.com 2019 - 2024. All rights reserved.