私は、私のアプリをRails 5.1にアップグレードしたばかりで、skip_before_actionコールバックの新しい動作に噛まれました。コールバックがスキップしようとしたときにコールバックが定義されていない場合は、エラーが発生します。skip_before_action Rails 5.1のコールバックと継承
私は昇給を渡すことができることを知っている:
skip_before_action :authorise, raise: false
のような偽しかし、それを行うには良い方法があるかどう思って。
私の主な問題は、熱心な負荷がtrueに設定されていると、新しい動作がコントローラーのモジュール式セットアップを駄目にすることです。 、熱心な負荷で
module Api
class AppChatsController < ModuleController
skip_before_action :authorise
end
end
、app_chats_controller.rb
最初にロードされます:その後、私はAUTHORIZEコールバックをスキップしapp_chats_controller.rb
を持って
module Api
class ModuleController < ActionController::Base
before_action :authorise
end
end
:
は基本的に私はmodule_controller.rb
とapp/controllers/api
は、dir持っていますコールバックがまだ定義されておらず、raise: true
エラーが発生していないことを意味します。
私はそれを弾丸をかむと、すべてにraise: false
を追加し、そうでなければならない、しかし確実に、より良い方法があれば...
の先頭に
require 'module_controller'
を追加することが、 Railsのモジュール解決はそれ自身でそれを理解してはいけませんか? – TomD'Rails.application.config.enable_dependency_loading'が' true'に設定されていますか? –
私はばかです。私はActionController :: Baseではなく、ApplicationControllerから1つの場所でモジュールコントローラを継承していました... – TomD