通过has_one关联查找多个记录

时间:2011-07-08 12:36:55

标签: ruby-on-rails ruby

我的客户和个人模型如下所示:

class Customer < ActiveRecord::Base
  belongs_to :person
  belongs_to :company
end

class Person < ActiveRecord::Base
  has_one :customer
end

如何获取与客户有关联的所有个人记录?

4 个答案:

答案 0 :(得分:2)

使用sql可能类似于

 Customer.where("customers.person_id IS NOT NULL")

要获得Person记录,您可以使用join

 Person.joins( :customers ).where("customers.person_id IS NOT NULL")

我不是起诉where这里是必要的(我相信不是)所以先试试Person.joins( :customers )

答案 1 :(得分:1)

person_array = []
Person.all.each do |p|
  unless p.customer.nil?
    person_array << p
  end
end

答案 2 :(得分:0)

我不认为这是最快的查询,但是:

Customer.where('person_id IS NOT NULL').map(&:person)

答案 3 :(得分:0)

rails 2.3.x

Customer.all(:include => :person).map(&:person).compact