gpt4 book ai didi

ruby-on-rails - 无方法错误 : undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module

转载 作者:行者123 更新时间:2023-12-03 09:24:31 32 4
gpt4 key购买 nike

我已经开发这个 RoR 5.1 应用程序有一段时间了,现在我需要添加一个新的迁移:

class AddActiveFlagToParameters < ActiveRecord::Migration[5.1]
def change
add_column :parameters, :is_active, :boolean, :default => true
end
end

当我尝试运行迁移时,rails 引发错误:

NoMethodError: undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module



阅读后,我终于通过升级到 Rails 5.2(gem activesupport 5.2.0)并注释掉文件 config/initializers/new_framework_defaults.rb 中的行来解决这个问题

但这听起来像是一个短期解决方案。

这是从哪里来的?我怎样才能安全地处理这个问题?

最佳答案

halt_callback_chains_on_return_false初始化程序中的设置是升级到 Rails 5.0 后临时保留旧回调行为的解决方案。假设您需要时间检查应用程序中的所有回调,然后您可以删除此设置。并假设在升级到 5.2 时已检查所有内容,因此删除此设置。

在 Rails 5 之前,返回 false来自 ActiveModel 或 ActiveModel::Validations 中的任何 before_ 回调,ActiveRecord 和 ActiveSupport 导致回调链停止。

从 Rails 5.0 开始,如果有任何 before_ 回调返回 false然后回调链不会停止。要显式停止回调链,我们需要使用 throw(:abort) .

所以你需要检查所有before_callbacks在应用程序中进行适当的行为,根据需要更改它们并在它之后从初始值设定项中删除此行。

您可以阅读更多 here

关于ruby-on-rails - 无方法错误 : undefined method `halt_callback_chains_on_return_false=' for ActiveSupport:Module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49744200/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com