【问题标题】:Finding most liked posts in the last day with Rails使用 Rails 查找最后一天最喜欢的帖子
【发布时间】:2013-04-06 23:53:55
【问题描述】:

我正在使用 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 gem 为我的 Post 模型提供分页。

那么,我应该使用什么来获取带有这些参数的帖子?

def popular
    @posts = ?
end

【问题讨论】:

    标签: ruby-on-rails database ruby-on-rails-3


    【解决方案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")
    

    【讨论】:

    • 我收到以下错误:SQLite3::SQLException: near "1": syntax error:
    • 见第二个:partial: 解决方案
    • 它有效,但它只显示有多个赞的帖子。另外,我现在应该怎么做才能显示最后一天的帖子?
    • 要显示零赞的帖子,也可以使用 LEFT OUTER JOIN 而不是 INNER JOIN。你使用什么样的数据库? SQLite3?
    • 是的,我使用 SQLite3 只是为了测试,之后我可能会使用 Postgres。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    相关资源
    最近更新 更多