Scopes "in place"?

Hej,

Powiedzmy że mam listę scope’ów które chcę zaaplikować do danego zapytania (na przykład
w formie symboli - nazw metod)

Najprostszy sposób żeby je wywołać jaki przychodzi mi do głowy jest taki:

[code] scopes = [:scope1, :scope2]
result = Class.scoped

scopes.each do |s|
result = result.send(s)
end

result[/code]
Jednak nie wygląda to najciekawiej - szczególnie to zwracanie na końcu.
Chciałbym zrobić coś jak

result = Class.scoped.tap do |result| scopes.each do |s| result.send(s) end end
lub coś w podobie.

Jest jakaś szansa żeby zrobić to tak, lub ktoś ma pomysł jak to ładniej zrobić?

Zwykle inject jest niepotrzebnie nadużywany, ale wygląda, że pasuje tutaj idealnie:

result = scopes.inject(Class.scoped) {|result, scope| result.send(scope) }

Oczywiście ubierz to w jakąś sensowną metodę (scope_chain?).

Faktycznie inject wygląda dość sensownie tu, nie pomyślałem o tym.
Dzięki za tipa.