-1

ユーザーがいいねできる投稿がある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 時間で最も高く評価された投稿を表示したいと思います。また、Post モデルにページネーションを提供する Kaminari gem も使用します。

では、これらのパラメーターを使用して投稿を取得するには、何を使用すればよいでしょうか?

def popular
    @posts = ?
end
4

1 に答える 1

1

現在、このコンピューターには私のレール環境がありませんが、これで遊んでみてください:

@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")
于 2013-04-07T00:14:10.930 に答える