Witam!
Zapętliłem się
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.