我正在尝试订购帖子。我想首先随机订购帖子,然后这些随机帖子应该由upvotes命令。
我试过了:
@posts= @posts.order("RANDOM(), upvotes DESC").limit(10)
但这不起作用。请帮忙。 谢谢!
答案 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!