Carlos Brando

Nome do Jogo

Torne seus métodos de pesquisa mais poderosos

Turbo

É uma boa prática colocar todos os seus métodos find nos models, disto todo mundo sabe. Se não sabe deveriar ler a tradução que o Akita fez do artigo "A dieta dos controller".
Neste artigo ele dá um exemplo assim:

[source:ruby] module FindExtensions

def find_recentes
    find(:all, :order => 'created_at desc')
end

end [/source]

Faça um favor para seu código e projetos, leia o artigo do Akita.


Colocando na prática esta dieta, resolvi dar uma melhorada nos métodos que fui criando nos models.
A grande maioria dos programadores Ruby on Rails já conhece o método with_scope do ActiveRecord. Usando este recurso pode-se criar métodos de pesquisa e criação nos models sem perder a flexibilidade.
Podemos fazer algo bem simples, assim:

[source:ruby] def find_recentes (options = {})

with_scope :find => options do
    find(:all, :order => 'created_at desc')
end

end [/source]

Com isto deixamos nossos controllers magrinhos, e ainda criamos métodos de pesquisa totalmente flexíveis. No caso acima poderíamos fazer algo assim em nosso controller:

[source:ruby] find_ recentes :limit =: 20 [/source]

Assim teríamos o mesmo método de antes, mas agora trazendo apenas os 20 primeiros registros.

Comments