假设书籍模型HABTM
类别,例如书籍 A 有类别"CA"
&如果我仅使用&"CB".
查询,我如何检索书籍 A。我知道但它使用操作。我需要类似手术的东西。"CA"
"CB"
.where("category_id in (1,2)")
OR
AND
已编辑
并且CA
只能从类别中获取书籍。以及如何包含查询条件,例如.where("book.p_year = 2012")
假设书籍模型HABTM
类别,例如书籍 A 有类别"CA"
&如果我仅使用&"CB".
查询,我如何检索书籍 A。我知道但它使用操作。我需要类似手术的东西。"CA"
"CB"
.where("category_id in (1,2)")
OR
AND
已编辑
并且CA
只能从类别中获取书籍。以及如何包含查询条件,例如.where("book.p_year = 2012")
ca = Category.find_by_name('CA')
cb = Category.find_by_name('CB')
Book.where(:id => (ca.book_ids & cb.book_ids)) # & returns elements common to both arrays.
否则,您需要直接在 SQL 中滥用连接表,按 book_id 对结果进行分组,对它们进行计数,并且只返回计数至少等于类别数的行......像这样(但我确定这是错误的,所以如果你走这条路,请仔细检查语法。也不确定它会比上面的更快):
SELECT book_id, count(*) as c from books_categories where category_id IN (1,2) group by book_id having count(*) >= 2;