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

Nei*_*eil 24 ruby ruby-on-rails

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

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

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

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

config.active_record.raise_in_transactional_callbacks = true
Run Code Online (Sandbox Code Playgroud)

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

R. *_*all 38

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

  • 如果您正在使用Rails 5,则会收到该警告,因为该选项未设置,因为您没有.尝试从配置中删除该行. (14认同)