多个语句轨道

时间:2014-10-07 20:36:53

标签: sql ruby-on-rails

我正在尝试订购帖子。我想首先随机订购帖子,然后这些随机帖子应该由upvotes命令。

我试过了:

@posts= @posts.order("RANDOM(), upvotes DESC").limit(10)

但这不起作用。请帮忙。 谢谢!

2 个答案:

答案 0 :(得分:0)

嗯,我这样做的方式是这样的:

Post.select("#{Post.table_name}.*, random() AS rsort").order("rsort, upvotes DESC").limit(10)

这基本上只是说,选择posts表中的所有列以及名为resort的列(这是0到1之间的随机数)。然后按照rsort列,然后是upvotes列进行排序。此外,您应该能够在之后访问模型实例上的rsort属性。

P.S。可能应该提出比rsort更好的列名。

答案 1 :(得分:0)

回答我自己的问题:

@posts=@posts.order("RANDOM()").limit(10).sort_by{|p| p.upvotes}.reverse!