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.



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

  1. No Comments Yet

Leave a Reply