我正在使用Rails创建一个应用程序,其中有些帖子可供用户喜欢。我为喜欢的人创建了一个不同的表,所以我有以下结构。
POSTS -> id
-> title
-> text
...
belongs_to :user
has_many :likes
USERS -> id
-> email
-> name
...
has_many :posts
has_many :likes
LIKES -> id
-> post_id
-> user_id
...
belongs_to :user
现在,在主页中,我想显示过去24小时内最受欢迎的帖子,按照他们有多少喜欢排序。我也使用Kaminari宝石为我的Post模型提供分页。
那么,我应该用什么来获取包含这些参数的帖子?
def popular
@posts = ?
end
答案 0 :(得分:1)
我这台计算机上目前没有我的rails env,但试着玩这个:
@posts = Post.joins("LEFT OUTER JOIN Likes ON likes.post_id = posts.id
AND likes.created_at >= DATETIME('now', '-1 day')")
.group("posts.id").order("COUNT(likes.id) DESC")