use*_*081 8 ruby-on-rails activesupport
我一直在开发这个RoR 5.1应用程序,现在我需要添加一个新的迁移:
class AddActiveFlagToParameters < ActiveRecord::Migration[5.1]
def change
add_column :parameters, :is_active, :boolean, :default => true
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试运行迁移时,rails会引发错误:
NoMethodError:ActiveSupport的未定义方法`halt_callback_chains_on_return_false =':模块
阅读,我终于解决了这个问题,升级到Rails 5.2(gem activesupport 5.2.0)并在文件config/initializers/new_framework_defaults.rb中注释掉这一行.
但这听起来像是一个短期解决方案.
这是从哪里来的?我怎样才能安全地处理这个问题?
Vas*_*isa 16
halt_callback_chains_on_return_false初始化程序中的设置是在升级到Rails 5.0之后临时保留旧回调行为的解决方案.假设您需要时间检查应用程序中的所有回调,之后您可以删除此设置.并且假设在升级到5.2时已经检查了所有内容,因此删除了此设置.
在Rails 5之前,false从ActiveModel或ActiveModel :: Validations中的任何before_回调返回,ActiveRecord和ActiveSupport导致停止回调链.
如果有任何before_ callback返回,则从Rails 5.0开始,false然后不停止回调链.要明确停止回调链,我们需要使用throw(:abort).
因此,您需要检查before_callbacks应用程序中的所有行为是否正确,如果需要,请更改它们,然后从初始化程序中删除此行.
你可以在这里阅读更多
| 归档时间: |
|
| 查看次数: |
2970 次 |
| 最近记录: |