[英]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.