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") }
我是 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") }