2016-10-18 8 views
0

Так что я контроллер, скажуДоступа к исключению части before_action в самом контроллере

class RandomActionController < ApplicationController 

и у меня есть метод check_authorization в ApplicationController, что я использую в RandomActionController в

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

В настоящее время в другое действие внутри RandomActionController, я мог бы построить массив действий, исключая их в разделе exceptcheck_authorization, или что-то еще. Моя проблема в том, как я могу получить эти действия как хэш/массив или любую другую форму?

+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

Спасибо. Это будет работать для меня. –