我有一本有很多副本的模型书。
副本属于Book,也属于School,有许多副本。
我想查询与学校相关联的书籍,并按副本排序,我对如何使用当前的关系有点迷失。
书籍模型包含副本的数据,如标题,作者等,副本就像书的实际记录。
非常感谢任何组织这种关系的帮助。
答案 0 :(得分:1)
Book.joins(:copies)
.where("copies.school_id = ?", school_id)
.order("COUNT(copies.id)")
答案 1 :(得分:0)
我无法冒昧地在ActiveRecord中给你一个答案,但这里的SQL可能是一个合理的答案:
SELECT book.name,
school.id,
COUNT(copy.*) number_of_copies
FROM book
JOIN copy on copy.book_id = book.id
JOIN school on copy.school_id = school.id
GROUP BY school.id,
book.name
ORDER BY number_of_copies
这取决于您的表格以某种方式构建。在我看来,学校不会有书籍,而是书籍的副本,所以我认为copy
表格应该有school_id
和book_id
<{1}}和book
表应该有外来引用。