相關領域我有一個Department
模型有兩個協會用戶,以使得Rails的排序和同型號
class Department < ActiveRecord::Base
has_many :members, class_name:"User", foreign_key:"department_id"
belongs_to :director, class_name:"User", foreign_key:"director_id
end
要顯示該模型的列表,通過會員我能做到這一點的數量排序
@departments = Department.select("departments.*, COUNT(users.id) AS members").joins(:members).group("departments.id")
@departments = @departments.order("members ASC")
如果我想在導演的相關模型中的字段(last_name
)進行排序,我可以這樣做:
@departments = Department.includes(:director)
@departments = @departments.order("users.last_name")
但是,我無法將這兩個查詢合併爲一個允許正確排序的查詢。如果我做
Department.select("departments.*, COUNT(users.id) AS members").joins(:members, :director).group("departments.id, users.last_name")
然後我得到的重複結果廣闊ammount的,我也排除resuls其中director_id
爲零。我如何構建查詢,以便我可以通過COUNT(users.id)
和本質上director.last_name
訂購?
編輯:這是.to_sql
的壞綜合查詢:
SELECT departments.*, COUNT(users.id) AS members FROM "departments"
INNER JOIN "users" ON "users"."department_id" = "departments"."id"
INNER JOIN "users" "directors_departments"
ON "directors_departments"."id" = "departments"."director_id"
GROUP BY departments.id, users.last_name
ORDER BY users.last_name DESC
你可以發佈rails用於這個查詢的SQL嗎?使用'.to_sql'來獲取原始生成的SQL。表格別名是這裏可能的罪魁禍首...... – PinnyM
@PinnyM完成! :) – Karew