假设我们有“主题-关系-类别”。
即,主题具有通过关系的多个类别。
我认为很容易获得具有类别的主题
#Relationship Model
Topic_id: integer
Category_id: integer
@topics=Topic.joins(:relationships)
但是,并非每个主题都有一个类别。那么,如何检索没有类别的主题?
是否有一个减去查询?
也许看起来像
@topics=Topic.where('id NOT IN (?)', Relationship.all)
我在activerecord equivalent to SQL 'minus'中找到它,但不确定该解决方案。 最佳答案
真的会更好。认为这会起作用:
@topics = Topic.joins('left join relationships on relationships.topic_id = topics.id').where('relationships.category_id is null')
或这个:
@topics = Topic
.joins('left join relationships on relationships.topic_id = topics.id join categories on categories.id = relationships.category_id')
.group('topics.id').having('count(categories.id) = 0')