ruby-on-rails - Rails 5 - 如何对 has_many 关联列表进行排序?

标签 ruby-on-rails ruby postgresql sorting ruby-on-rails-5

在 Rails 5 和 postgresql 中,我想根据 created_at: :desc 对列表进行排序。

模型结构就像, 模型/评论.rb

has_many :comments
has_many :commented_users, :through=>:comments, :source=>:user

在 View 中,我想显示基于 created_at (DESC) 日期的用户列表,该字段来自 comments

Controller 查询就像,

review = Review.find_by_id(params[:id])
comments = review.commented_users

如果我为 review.commented_users 提供 order 那么显然它将对 User 进行排序,我如何根据 Comment 对用户进行排序?

评论字段是,

=> #<Review id: nil, user_id: nil, content: nil, created_at: nil, updated_at: nil>

评论字段是,

=> #<Comment id: nil, review_id: nil, user_id: nil, created_at: nil, updated_at: nil>

用户字段是,

=> #<User id: nil, email: "", created_at: nil, updated_at: nil, first_name: nil, last_name: nil, inactive: false, password_updated_at: nil, active: true, reviews_count: 0, notification_seen_at: nil, deleted_at: nil, status: "pending">

请帮我解决这个排序问题,我是 postgresql

的新手

最佳答案

请从您的关联中删除不同

has_many :commented_users, through: :comments, source: :user

您可以使用以下代码验证用户的唯一性

validates :review_id, uniqueness: {scope: :user_id}

最后尝试下面的查询,以获取按创建的评论表排序的记录。

Review.includes(comments: :user).find_by_id(params[:id]).commented_users.order("comments.created_at")

关于ruby-on-rails - Rails 5 - 如何对 has_many 关联列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148608/

相关文章:

cryptography - 如何为 FIPS 配置 openjdk 和简单的 postgres 连接示例

javascript - 在 Rails 3 应用程序中添加页面特定 JavaScript 的最佳方法?

ruby-on-rails - ActiveRecord 在 db :reset 之后寻找用户 ID=1

ruby-on-rails - 保存 active_record 而不在 rails3 中调用回调

ruby-on-rails - Rails 4 ArgumentError - 参数数量错误

ruby-on-rails - ruby 版本之间的时区解析差异

json - 返回多个键值对的 json,而不是单对键值 json 的列表

sql - 如何将 PostgreSQL 格式转换为 GeoJSON 格式?

ruby-on-rails - 慢查询的 PostgreSQL 日志中有很多 "COMMIT;"

ruby-on-rails - RVM bundle 程序已安装错误 : Gem bundler is not installed, 首先运行 `gem install bundler`