如何在Rails 3中找到没有关联记录的记录?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

考虑一个简单的关联...

class Person
   has_many :friends
end

class Friend
   belongs_to :person
end

class Person
   has_many :contacts
   has_many :friends, :through => :contacts, :uniq => true
end

class Friend
   has_many :contacts
   has_many :people, :through => :contacts, :uniq => true
end

class Contact
   belongs_to :friend
   belongs_to :person
end

我真的不想使用counter_cache - 而且我从我读过的内容中看不到has_many:through

我不想拉所有person.friends记录并在Ruby中通过它们循环 - 我想要一个查询/范围,可以使用meta_search gem

我不介意查询的性能成本

离实际的SQL越远越好......

提问于
用户回答回答于

这仍然与SQL非常接近,但在第一种情况下,它应该让每个没有朋友的人都可以看到:

Person.where('id NOT IN (SELECT DISTINCT(person_id) FROM friends)')
用户回答回答于

可以使用它left_outer_joins来避免加载关联:

Person.left_outer_joins(:contacts).where( contacts: { id: nil } )

扫码关注云+社区