按关联顺序排序没有这样的列

时间:2015-10-14 13:19:26

标签: sql ruby-on-rails activerecord associations

我在尝试按关联计数订购模型时遇到了一些问题。我正在使用的方法是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

1 个答案:

答案 0 :(得分:0)

不确定它是否有所作为,但请尝试

.order(video_count: :desc)

这就是我常用的语法。