ruby-on-rails - Rails 不同的用户记录,按时间排序

标签 ruby-on-rails postgresql

所以我有一个查询要从我关注的每个用户那里获取最新的帖子。像这样:

query = Post.select("DISTINCT ON (user_id) *")
      .includes(:likes).includes(:comments)
      .where(user_id: followings)
      .where(silently_deleted: false)
      .order(user_id: :desc, created_at: :desc)

问题是帖子不会按日期排序。而且我真的无法执行 sort_by 因为我们正在分页。

有没有办法通过 created_at 进行排序,同时仍然保持唯一性?

最佳答案

试试这个:

query = Post.select("DISTINCT ON (user_id) *")
  .includes(:likes).includes(:comments)
  .where(user_id: followings)
  .where(silently_deleted: false)
  .order(user_id: :desc)
  .order("posts.created_at DESC")

您需要显式添加表名,因为点赞和评论表也有列名 created_at

关于ruby-on-rails - Rails 不同的用户记录,按时间排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37311919/

相关文章:

ruby-on-rails - Rails单元测试错误: "Test is not a module"

ruby-on-rails - 限制作为可标记行为的标签数量

ruby-on-rails - Rails .save() 不存储 Id

node.js - 如何在异议模型的 $afterUpdate Hook 中获取整个更新条目?

postgresql - 如何配置postgres不显示非空约束错误

php - 在 openerp 上创建 sale.order 时访问被拒绝

ruby-on-rails - 使用 activerecord-sqlserver-adapter 时出现 ArgumentError : wrong number of arguments (3 for 2) after upgrading to Rails 3. 1

javascript - 将 ruby​​ 变量从 Controller 分配给 javascript 变量

ruby-on-rails - 有没有一种方法可以将 rails 中的值设置为 nil 并保存?

linux - 如何在 Emacs lisp/config 中使用 unix 登录用户名?