2017-09-26 112 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) 

,但它使更多的请求,并需要额外注意的情况下,当类别不能被发现。