2013-01-08 78 views
1

是否有可能從另一個調用before_filter?我問的原因是因爲我有兩個類似的before_filters,但有一個額外的條件可能仍然是真的。因此,如果第一個before_filter爲true,那麼第二個爲true,但如果第一個爲false,則會檢查另一個條件,然後確定它是true還是false。你可以從Ruby on Rails的另一個before_filter調用一個before_filter嗎?

+3

爲什麼不把兩個過濾器合併成一個方法,用一個過濾器代替它們呢? –

+0

因爲其中一個過濾器是一個特殊的邊緣案例,persay,並且只能從一個控制器動作中調用,而另一個則從多個調用中調用。 – dmastylo

回答

1

這是正確的過濾器只是方法,所以要回答你的問題:

是的,這是可以從其他過濾器調用過濾器。

但請注意,您不應呈現或重定向兩次,否則您將收到AbstractController::DoubleRenderError。因此,如果其中一個過濾器正在渲染,則不應該調用其他過濾器。

使用布爾返回值來管理這個。

-1

如果你不想結合方法我可以做這樣的事情。

before_filter :filter_method 

def filter_method 
if method_one == true 
    method_two 
end 
end 

def method_one 
# stuff here 
end 

def method_two 
# stuff here 
end 
0

您可以。 before_filter只是一個調用常規方法的觸發器。該方法可以調用任何其他方法,甚至可以調用其他before_filters方法。

+0

需要注意的是過濾器通常會呈現或重定向。你必須照顧這個。 –

相關問題