named_scope :with_country, lambad { |country_id| ...}
named_scope :with_language, lambad { |language_id| ...}
named_scope :with_gender, lambad { |gender_id| ...}
if params[:country_id]
Event.with_country(params[:country_id])
elsif params[:langauge_id]
Event.with_state(params[:language_id])
else
......
#so many combinations
end
如果我同時使用國家和語言,那麼我需要同時應用它們。在我的真實應用程序中,我有8個不同的named_scopes,可以根據情況應用。如何逐步應用named_scope或在某處保留named_scopes,然後稍後應用一次。如何在Rails中增量應用named_scopes
我想抱着一種價值觀這樣
tmp = Event.with_country(1)
但跑動的SQL。
我想我可以寫類似
if !params[:country_id].blank? && !params[:language_id].blank? && !params[:gender_id].blank?
Event.with_country(params[:country_id]).with_language(..).with_gender
elsif country && language
elsif country && gender
elsif country && gender
.. you see the problem
如果你刪除零,那麼你可以看到,這是SQL立即被解僱 – Roger 2009-12-29 16:38:43
我的壞。腳本/控制檯調用to_s,這就是爲什麼sql被炒魷魚 – Roger 2009-12-29 16:44:41
Ayup。 nil確保to_s從未發生過:) 既然您知道您可以將範圍堆疊在一起,那麼您的問題是否已得到回答? – Matchu 2009-12-29 22:06:24