【问题标题】:What causes deprecation warning: ActiveRecord::Base.raise_in_transactional_callbacks=?什么导致弃用警告:ActiveRecord::Base.raise_in_transactional_callbacks=?
【发布时间】:2016-09-24 16:48:54
【问题描述】:

我在运行功能规范时收到此消息:

弃用警告: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!

标签: ruby-on-rails ruby


【解决方案1】:

我相信这种行为是在 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 回调时,你会 收到有关此即将发生的更改的弃用警告。当你在 准备好了,您可以选择加入新行为并删除弃用 通过将以下配置添加到您的 配置/应用程序.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,您会收到该警告,因为设置了该选项,而不是因为您没有它。尝试从您的配置中删除该行。
【解决方案2】:

写在这里是为了让@R 更容易看到。哈瑟拉尔的评论。

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

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

config.active_record.raise_in_transactional_callbacks = true

【讨论】:

    猜你喜欢
    • 2021-11-25
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-26
    • 1970-01-01
    • 2019-08-28
    相关资源
    最近更新 更多