with_scope bardziej dynamicznie

Witam!

Zapętliłem się :frowning: Mam zestaw filtrów na metaodach klasy with_scope, o nazwach takich jak w

FILTERS = %( f1 f2 ... fn)

Jak zamienić takiego zagniedźonego maszkarona:

Klasa.f1 do Klasa.f2 do ... Klasa.fn do Klasa.find(:all) end ... end end
na coś bardziej dynamicznego, co by się dało używać w taki sposób?

Klasa.with_filters(FILTERS){ Klasa.find(:all) }

Może skorzystaj po prostu z named_scope ?

Np.

[code=ruby]class Something

named_scope :f1, :conditions => {}
named_scope :f2, :conditions => {}
named_scope :f3, :conditions => {}

end

Something.f1.f2.all

Something.f3.all

etc.[/code]
Do named_scope możesz przekazać parametry jeśli warunki się powtarzają i można je uprościć. Podeślij najlepiej faktyczny kod na którym pracujesz, łatwiej będzie o tym dyskutować.

with_scope służy bardziej do definiowania zasięgu i wykonania KILKU (a nie jednego) find’ów w jego obrębie. Z tego co napisałeś to robisz na końcu jednego find’a więc named_scope imho bardziej pasuje.