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

时间:2016-05-26 15:20:40

标签: ruby-on-rails ruby

运行我的功能规格时收到此消息:

  

弃用警告:不推荐使用ActiveRecord :: Base.raise_in_transactional_callbacks =,不会有任何影响,并且无需替换即可删除。

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

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

config.active_record.raise_in_transactional_callbacks = true

我想了解此弃用警告实际含义的提示,并了解触发此弃用警告的原因。

2 个答案:

答案 0 :(得分: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一样正常传播   记录回调。

     

当你定义after_rollback或after_commit回调时,你会   收到有关即将发生的变更的弃用警告。当你是   准备就绪,您可以选择进入新行为并删除弃用   通过将以下配置添加到您的   配置/ application.rb中:

     

Random random = new Random(); for (int i=0; i< arraysize; i++){ beepArray[i] = random.nextInt((0 - count)+ 1); }

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

中的行
  

config/application.rb

答案 1 :(得分:2)

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

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

在rails 5中,从application.rb

中删除以下行
config.active_record.raise_in_transactional_callbacks = true