Ruby on Rails - 按 has_many 关系的字段排序对象

Ruby on Rails - Order objects by field of a has_many relation

我是 rails 初学者。

如何加载具有以下条件的数据库。

我想要显示按 comment.created_at DESC

排序的讲座列表

schema.rb

  create_table "comments", force: :cascade do |t|
    t.text     "content"
    t.integer  "user_id"
    t.integer  "lecture_id"
    t.datetime "created_at",             null: false
    t.datetime "updated_at",             null: false
    t.integer  "likedcount", default: 0
  end

  create_table "lectures", force: :cascade do |t|
    t.string   "subject"
    t.string   "professor"
    t.string   "major"
    t.datetime "created_at",             null: false
    t.datetime "updated_at",             null: false
    t.integer  "uptachi",    default: 0
    t.integer  "hatachi",    default: 0
  end

lecture.rb

has_many :comments

comment.rb

belongs_to: lectures

你需要写成:

has_many :comments, -> { order("comments.created_at DESC") }

根据OP的评论,他想要的似乎是一个命名范围。喜欢,

scope :order_by_comments, -> { joins(:comments).order("comments.created_at DESC") }