过滤rails中的belongs_to项

时间:2015-12-24 11:58:08

标签: ruby-on-rails ruby

我的Bookshelf模型has_many :books,我需要按bookshelf.category_id过滤书籍

books: id, bookshelf_id
 belongs_to: bookshelf

bookshelf: id, category_id
 has_many :books

我想到的例子但它不起作用:

- @books.where(bookshelf: {category_id: 5 }).each do |book|

4 个答案:

答案 0 :(得分:0)

由于你有一个清晰的层次结构,你应该首先查看书架,然后获取书籍收藏

BookShelf.where(category_id: 5).books

答案 1 :(得分:0)

使用joins过滤记录。试试这个

@books = Book.joins(:bookshelf).where('bookshelves.category_id =?', 5)

我希望这会有所帮助。

答案 2 :(得分:0)

 setClientAccountFromJSON("somestring or stringvar");

答案 3 :(得分:-1)

如果您已经拥有@books对象并想要对其进行查询,那么您可以使用

@books.where('bookshelf_id in (?)', Bookshelf.where(category_id: 5).pluck(:id))