什么导致了弃用警告:ActiveRecord::Base.raise_in_transactional_callbacks=?

29

当我运行我的功能测试时,会得到以下消息:

警告:ActiveRecord::Base.raise_in_transactional_callbacks=已经过时,无效且将被删除而没有替代品。

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

我在我的application.rb文件中使用了这个配置,但是当我移除它后,这个弃用警告消失了:

config.active_record.raise_in_transactional_callbacks = true

我希望了解这个弃用警告的确切含义,并知道是什么触发了这个弃用警告。


可能是由于新继承结构,现在ActiveRecord从ApplicationRecord继承,而不是直接从ActiveRecord :: Base继承,但不确定。一旦rails5成为主流,就迫不及待地开始使用它! - bkunzi01
2个回答

46

我认为在Rails 5中已经不存在的问题,在4.1和4.2之间添加了此行为作为临时解决方案:

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


我有你提到的东西,但我仍然看到警告? - Kick Buttowski
14
如果您使用的是 Rails 5,那么会出现该警告是因为选项被设置了,而不是因为您没有该选项。尝试从您的配置文件中删除这一行即可。 - R. Hatherall

3

为了更好地展示@R.Hatherall的评论,我在这里写下了这篇文章。

当我升级到版本5时,我收到了这个警告,并不是因为我在application.rb中没有以下设置,而是因为我已经有了这个设置。

在Rails 5中,请从application.rb中删除以下行。

config.active_record.raise_in_transactional_callbacks = true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接