私はこのRoR5.1アプリケーションをしばらく開発してきましたが、今すぐ新しい移行を追加する必要があります。
class AddActiveFlagToParameters < ActiveRecord::Migration[5.1]
def change
add_column :parameters, :is_active, :boolean, :default => true
end
end
移行を実行しようとすると、Railsはエラーを発生させます:
NoMethodError:ActiveSupport:Moduleの未定義のメソッド `halt_callback_chains_on_return_false = '
読んで、私はついに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へのアップグレード時にすべてがすでにチェックされていると想定しているため、この設定は削除されます。
Before Rails 5、ActiveModelまたはActiveModel :: Validationsのbefore_コールバックからfalse
を返すと、ActiveRecordとActiveSupportがコールバックチェーンを停止しました。
Rails 5.0、before_コールバックがfalse
を返す場合、コールバックチェーンは停止されません。コールバックチェーンを明示的に停止するには、throw(:abort)
を使用する必要があります。
したがって、アプリ内のすべての_before_callbacks
_が適切に動作するかどうかを確認し、必要に応じて変更して、その後の初期化子からこの行を削除する必要があります。
あなたはもっと読むことができます ここ