我在尝试按关联计数订购模型时遇到了一些问题。我正在使用的方法是here,它可以在控制台中工作,每当我使用byebug暂停它时。其他时候它根本不执行select语句,只是尝试进行组和顺序。这是我的班级:
class Course < ActiveRecord::Base
has_many :course_videos, foreign_key: :course_id
has_many :videos, through: :course_videos
scope :ordered_by_video_count, -> {
joins(:videos)
.select("courses.*, count(videos.id) as video_count")
.group("courses.id")
.order("video_count desc")
}
end
我得到的确切错误是:
SQLite3::SQLException: no such column: video_count: SELECT COUNT(*) AS count_all, courses.id AS courses_id FROM "courses" INNER JOIN "course_videos" ON "course_videos"."course_id" = "courses"."id" INNER JOIN "videos" ON "videos"."id" = "course_videos"."video_id" GROUP BY courses.id ORDER BY video_count desc
谢谢!
的Stefan
答案 0 :(得分:0)
不确定它是否有所作为,但请尝试
.order(video_count: :desc)
这就是我常用的语法。