1

我有一本模型书,里面有很多份。

Copy 属于 Book 也属于 School,它有很多份。

我想查询与学校相关的书籍并按份数排序,但我对如何处理当前的关系有点迷茫。

书籍模型包含副本的数据,如标题、作者等,副本就像书籍的物理记录。

对于组织这种关系的任何帮助将不胜感激。

4

2 回答 2

1
Book.joins(:copies)
    .where("copies.school_id = ?", school_id)
    .order("COUNT(copies.id)")
于 2013-04-10T20:54:06.583 回答
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

这取决于您的表格以某种方式构建。在我看来,学校不会有书籍,而是书籍的副本,所以我认为copytable 应该有 a school_idandbook_id并且booknorschool表不应该有外国参考。

于 2013-04-10T21:09:42.593 回答