HasFinder – estendendo e encadeando condições de busca

07nov07

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.

Anúncios


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

  1. Deixe um comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: