Fork me on GitHub

Keep Learning Conhecimento nunca é o bastante

Postado em
7 November 2007 @ 16:51

Tag(s)
Dicas, Rails

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

Comentário por
Novidades no Rails — Learning on Rails
25 March 2008 @ 12:27

[…] algum tempo falei do plugin has_finder. Esse plugin foi incorporado ao Rails com o nome de named_scope e já estará disponível na […]


Deixe um comentário