2017-05-02 3 views
3

私は、私のアプリを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.rbapp/controllers/api は、dir持っていますコールバックがまだ定義されておらず、raise: trueエラーが発生していないことを意味します。

私はそれを弾丸をかむと、すべてにraise: falseを追加し、そうでなければならない、しかし確実に、より良い方法があれば...

答えて

1

てみちょっと作品app_chats_controller.rb

+1

の先頭にrequire 'module_controller'を追加することが、 Railsのモジュール解決はそれ自身でそれを理解してはいけませんか? – TomD

+0

'Rails.application.config.enable_dependency_loading'が' true'に設定されていますか? –

+1

私はばかです。私はActionController :: Baseではなく、ApplicationControllerから1つの場所でモジュールコントローラを継承していました... – TomD