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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了导致弃用警告的原因是:ActiveRecord :: Base.raise_in_transactional_callbacks =?相关的知识,希望对你有一定的参考价值。

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

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

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

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

config.active_record.raise_in_transactional_callbacks = true

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

答案

我相信这种行为是在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

另一答案

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

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

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

config.active_record.raise_in_transactional_callbacks = true

以上是关于导致弃用警告的原因是:ActiveRecord :: Base.raise_in_transactional_callbacks =?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mongoose 时的 MongoDB 弃用警告

AppAuth 的弃用警告

store/ 的 Vuex 经典模式已弃用,将在 Nuxt 3 中删除

弃用警告:executable_path 已被弃用 selenium python

sklearn 的弃用警告

MongoDB 弃用警告