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:
class Article {:published => true}
has_finder :popular, :conditions => ...
end
É possível encadeá-los ou usar outros métodos sobre eles:
Article.published.popular Article.published.popular.count Article.popular.find(:first)
Trabalhando com associações:
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:
class Article
has_finder :unpublished :conditions => {:published => false} do
def published_all
find(:all).map(&:publish)
end
end
end
Leia mais aqui.
Filed under: Dicas, Rails | Leave a Comment

No Responses Yet to “HasFinder – estendendo e encadeando condições de busca”