2017-09-26 114 views
1

我有兩個型號文章和類別Rails的,有屬於許多,比賽的所有條件

class Article < ApplicationRecord 

    has_and_belongs_to_many :categories 

end 

我想有1類和2關聯類文章。

Article.joins(:categories).where(categories: {id: [1,2]} ) 

上面的代碼不會做,因爲如果與1類或第2類是相關聯,那麼它會被退回並且那不是目標的文章。兩者必須匹配。

回答

0

您只能查詢第一類別的那些文章,它們也是第二類文章。

這將是這樣的:

Article.joins(:categories) 
    .where(categories: { id: 1 }) 
    .where(id: Article.joins(:categories).where(categories: { id: 2 })) 

注意,它可以:

Category.find(1).articles.where(id: Category.find(2).articles) 

,但它使更多的請求,並需要額外注意的情況下,當類別不能被發現。