尝试找出一个范围,找到Parents
所有Children
没有Pets
命名的所有Parent.includes(children: :pets).where.not("pets.name = ?", "Bob")
" Bob"
parent | child | pet.name
1 1 "Mr. Cat"
1 1 "Barker"
1 2 "Snuggles"
2 3 "Bob"
2 4 "Carl"
3 5 "Bob"
将找到所有父母的宠物,其名称不是" Bob",但我想找到所有父母,其中没有他们的宠物被命名" Bob"
例如:
{{1}}
我希望查询只返回父1,因为父1有0个名为Bob的宠物。然而,范围代替返回父母1和2.因为父母2有一个名为" Carl"和" Carl" !=" Bob"。
答案 0 :(得分:0)
您可以使用 not ilike
Parent.includes(children: :pets).where.not("pets.name not ilike ?", "%Bob%")
已编辑的代码
Parent.includes(children: :pets).where("pets.name not ilike ?", "%Bob%")