HasFinder – estendendo e encadeando condições de busca
HasFinder é uma extensão ao ActiveRecord criada por Nick Kallen, da Pivotal Labs, que permite a flexibilização de métodos customizados de busca, ao estilo do que é possÃvel fazer com with_scope ou com os plugins scope_out e scope_proxy.
A diferença é que o HasFinder permite o encadeamento de condições e também o uso das mesmas em associações. Exemplos:
Definindo os métodos de busca e suas condições:
1 2 3 4 | class Article has_finder :published, :conditions => {:published => true} has_finder :popular, :conditions => ... end |
É possÃvel encadeá-los ou usar outros métodos sobre eles:
1 2 3 | Article.published.popular Article.published.popular.count Article.popular.find(:first) |
Trabalhando com associações:
1 2 3 4 5 6 | class User has_many :articles end user.articles.popular.find(:first) user.articles.published.popular.average(:view_count) |
Também é possÃvel estendê-los com blocos:
1 2 3 4 5 6 7 | class Article has_finder :unpublished, :conditions => {:published => false} do def published_all find(:all).map(&:publish) end end end |
Leia mais aqui.
1 Comentário