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
Si j'obtiens à la fois le pays et la langue, alors je dois appliquer les deux. Dans ma vraie application j'ai 8 named_scopes différents qui pourraient être appliqués selon le cas. Comment appliquer named_scopes de manière incrémentielle ou conserver sur named_scopes quelque part, puis appliquer plus tard en un seul coup.Comment appliquer named_scopes de manière incrémentale dans Rails
J'ai essayé tenant à des valeurs telles que ce
tmp = Event.with_country(1)
mais qui se déclenche instantanément l'sql.
Je suppose que je peux écrire quelque chose comme
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
Si vous supprimez zéro alors vous pouvez voir que sql est déclenché instantanément – Roger
mon mauvais. script/console appelle to_s et c'est pourquoi sql se fait virer – Roger
Ayup. Le zéro était pour s'assurer que les to_s ne se sont jamais produits :) Maintenant que vous savez que vous pouvez empiler des oscilloscopes les uns sur les autres, avez-vous répondu à votre question? – Matchu