Consulta randômica de produtos.

5 views
Skip to first unread message

Diego Brito

unread,
Dec 15, 2009, 7:13:37 AM12/15/09
to rails-br
Olá,

Eu estou desenvolvendo uma loja virtual e gostaria de perguntar se alguém sabe fazer uma consulta randômica. Seria algo do tipo:

  def index
    @contatos = Contato.find, :order => 'randômico'
  end

...é claro que o código acima não funciona, mas teria alguma forma de fazer isso utilizando o "Find"? A propósito essa action é para exibir os produtos da loja na home na área produtos destaques. Ou seja, meu intuito é que o sistema consulte randomicamente e exiba apenas 8, de uma base de mais de 5.000 produtos cadastrados.


Atenciosamente, 

Diego Brito 
Consultor em Marketing Estratégico

Blog Pessoal: www.diegobrito.com.br

Marcio Aun Migueis

unread,
Dec 15, 2009, 7:17:54 AM12/15/09
to rail...@googlegroups.com
Diego,

  Eu faço assim em uma loja que monte recentemente:

         @produtos = Produto.disponiveis.nao_vendidos(:order => 'RANDOM()')

 (  Claro que disponiveis e nao_vendidos são named_scope da lcasse produto.rb ) 

  
  Eu acho que há alguma diferença no comando entre o MySql e o SqLite3. Do jeito que está roda no Sqlite3

  Marcio

2009/12/15 Diego Brito <diegod...@gmail.com>

--

Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.

Maurício Linhares

unread,
Dec 15, 2009, 7:23:41 AM12/15/09
to rail...@googlegroups.com
No MySQL seria :order => 'RAND()', mas é bom sempre avisar que o
RAND() vai levantar todas as linhas que forem filtradas pelo where e
só então selecionar algumas baseadas no LIMIT que você passar.

Então, se você tem um banco grande ou que é muito acessado, é garantia
de fazer o banco sentar :)

Melhor procurar outras maneiras de fazer seleção randômica.

-
Maurício Linhares
http://codeshooter.wordpress.com/ | http://twitter.com/mauriciojr



2009/12/15 Marcio Aun Migueis <marc...@gmail.com>:

Marcos Tapajos

unread,
Dec 15, 2009, 7:33:02 AM12/15/09
to rail...@googlegroups.com
O Sphinx pode te ajudar também. Dá para subverter bem o uso dele e fazer várias paradas maneiras e aliviar seu banco.

[]'s


Marcos Tapajós 
http://tapajos.me
tap...@gmail.com
mar...@tapajos.me
Mobile: +55 21 8709-8693
Skype: marcostapajos
Gtalk/MSN: tap...@gmail.com
Twitter: tapajos

Diego Brito

unread,
Dec 15, 2009, 7:48:13 AM12/15/09
to rail...@googlegroups.com
Nesse caso o Sphinx seria um implementação muito agressiva, pois essa loja virtual é baseada no Spree e ele já vem com o searchlogic. Teria alguma forma via searchlogic? Bom, vou ver a documentação também...
Reply all
Reply to author
Forward
0 new messages