2016-10-18 42 views
0

所以我有一個控制器,說訪問除了控制器本身before_action的一部分

class RandomActionController < ApplicationController 

和我有ApplicationController的方法check_authorization,我在RandomActionController在使用作爲

before_action :check_authorization, except: [:create, :get_actions, ..] 

現在在RandomActionController裏面的另一個動作,我可能會在check_authorizationexcept部分,或其他什麼地方建立一個排除行動的陣列。我的問題是,我如何將這些操作作爲散列/數組或其他任何形式?

+1

把它們放在方法/常量中並使用兩次。唯一的方法 –

回答

1

你傳遞給except部分是一個字面數組,字符串或符號。 Rails不會讓你(afaik)反省一個控制器回調來提取它所聲明的參數。

如果您希望能夠重新使用動作列表,您需要將其鏈接到標識符。

例如這個模式我經常使用:

class ApplicationController 

    private 

    def self.member_actions 
    [:show, :edit, :destroy, :update] 
    end 

    def self.collection_actions 
    [:new, :index, :create] 
    end 
end 

class FooController < ApplicationController 
    before_action :set_foo, only: member_actions 

    def self.member_actions 
    super + [:fuzzle, :wuzzle] 
    end 
end 

但是你可以一樣好使用常量或其他任何在類上下文中可用。

+0

謝謝你。這對我有用。 –