Quando você executa o método find_all em um named_scope o método não está sendo direcionado para o proxy_found conforme o esperado. Isto faz com que um erro NoMethodError seja retornado.
Topic.base.find_all(&:approved)
# => NoMethodError: undefined method `find_all' for #<Class:0x19a0fb4>
Este problema pode ser contornado usando o método to_a:
Topic.base.to_a.find_all(&:approved)
# => [#<Reply:0x179e720>#<Topic:0x179e388>#<Reply:0x179e20c>]
Após o lançamento do Rails 2.2 não teremos mais este erro.
2 Comentários em "Edge Rails: Método find_all falhando no named_scope"
Eu to com preguiça de testar, mas isso não faria dois acessos ao banco de dados? O método to_a não iria executar a query com o scope “base”?
Acho que não, mas eu preciso testar novamente para ter certeza tbm…
Deixe o seu comentário!