2013-09-26 2 views
2

Возможно ли пропустить фильтр перед использованием при использовании skip_before_filter, когда параметр before_filter задан блоком. Например:Пропустить before_filter, определенный с помощью блока

class ApplicationController < ActionController::Base 
    before_filter do |controller| 
    # filter stuff 
    end 
end 

Я знаю, что это возможно, используя «обычный» способ определения фильтра с именем метода.

+0

не думаю, что это так, переместите его к способу – apneadiving

ответ

2

Его наиболее определенно невозможно. Из документации:

Обратите внимание, что пропуск использует Ruby, равенство, так что невозможно пропустить обратный вызов, определенный с помощью анонимного процедурный с помощью #skip_filter

http://apidock.com/rails/AbstractController/Callbacks/ClassMethods/skip_action_callback

2

Я на самом деле нашел способ обойти эту проблему используя опцию if с помощью метода. Используйте

class ApplicationController < ActionController::Base 
    before_filter(:if => :use_filter?) do |controller| 
    # filter stuff 
    end 

    private 

    def use_filter? 
    true 
    end 
end 

class OtherController < ApplicationController 
    private 

    def use_filter? 
    false 
    end 
end 

: D

+0

Или вы можете использовать: если => inherited_controller? def inherited_controller? self.class! = ApplicationController end –

Смежные вопросы