提取对象集合的嵌套对象(位置产品)

时间:2013-10-15 07:08:25

标签: ruby-on-rails collections rails-geocoder

我有两个模型:ProductLocation

class Location
  has_many :products
end

class Product
  belongs_to :location
end

当我使用地理编码器gem时,我可以使用近距离范围,允许我选择特定地址周围的每个位置。类似的东西:

@locations_near_paris = Location.near("Paris")

现在,我想使用@locations_near_paris集合制作一系列与巴黎关系密切的产品。我怎么能这样做?

我做了以下,但我觉得这不是一个好习惯......

close_locations.each do |l|
  unless l.products.nil?
    l.products.each do |p|
      close_products << p
    end
  end
end

1 个答案:

答案 0 :(得分:1)

我不知道地理编码方法是否会返回AR,但我们假设它没有。

location_ids = Location.near("Paris").collect do |location|
  location.id
end

paris_products = Product.where(location_id: location_ids)