ActiveRecord查找不存在与属性关联的实例

时间:2016-12-08 00:25:22

标签: ruby-on-rails postgresql activerecord

尝试找出一个范围,找到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"。

1 个答案:

答案 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%")