2013-11-21 41 views
0

在Rails中,如何在任何控制器上執行操作之前始終調用某個特定的方法?Rails強制控制器方法被稱爲

例如,我想要一個名爲can?('xxx')的方法來總是調用授權檢查。如果有人創建一個新的控制器方法並忘記調用它,我想引發一個異常。

回答

0

您應該過濾器之前使用:

class ApplicationController < ActionController::Base 
    before_action :require_login 

    private 

    def require_login 
    can?('xxx') 
    end 
end 

文檔:http://guides.rubyonrails.org/action_controller_overview.html#filters

+0

感謝Nerian,但一些所需要的罐中的實例變量?在子控制器中確定。它被稱爲對象像@ campaign.can?('view.ads') –

+0

你不需要使用ApplicationController。你可以把它放在你需要它的控制器之前;並使用一種方法來獲取current_campaign,例如。 – Nerian