繁体   English   中英

过滤rails中的归属项

[英]Filter belongs_to items in rails

我有has_many :books Bookshelf模型,我需要按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|

由于您具有清晰的层次结构,因此应该首先查找书架,然后获取书集

BookShelf.where(category_id: 5).books

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

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

我希望这会有所帮助。

@books = Book.joins(:bookshelves).where(bookshelf: { category_id: 5 })

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM