Edge Rails: Método find_all falhando no named_scope

10 de setembro de 2008  |  Rails 2.2  | 

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


  1. 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”? ;)

  2. Acho que não, mas eu preciso testar novamente para ter certeza tbm…

Deixe um comentário