Rails按关联计数排序

时间:2015-04-20 13:34:14

标签: sql ruby-on-rails ruby postgresql

我有2个型号。 Gif, GifStatistic

gif has_many :gif_statistics

GifStatistics包含名为state的列。它可以是likedislike

我想要实现的是查询gif,但是在highest count of likes

中对它们进行排序

像(伪代码)

之类的东西
Gif.joins(:gif_statistics).order(count(gif.gif_statistics.state))

我如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

尝试此查询。

Gif.joins(:gif_statistics).select("*, count(gif_statistics.state) as state_count").order("state_count desc")

我个人的建议是你在gif模型中创建两个新字段,这样你就可以在创建它时存储喜欢和不喜欢的计数,这样你就不必进行这样复杂的查询。放置计数器缓存可以提高速度。