在数组中收集一组has_one关联

时间:2014-09-29 03:20:02

标签: ruby-on-rails associations has-one rails-geocoder

我有一个模型Offer。每个Offer has_one Location。我正在尝试使用Geocoder gem方法near来获取所有附近的Location。该方法使用如下:

@nearby_locations = Location.near(address, 100, :order => :distance)

我不确定如何在每个Location的相关位置替换Location.near()中的Offer。我可以使用Offer访问每个@first_offer.location对象的位置,但在整个near表上调用Location方法。如何将所有Offer.location收集到一个数组中,以便我可以在它们上使用此方法?

提前致谢。我希望我有道理。如果没有,请发表评论。

1 个答案:

答案 0 :(得分:1)

不确定我是否完全理解您的问题,但我会尽我所能回答。 offer.location返回一个位置对象的集合,以便您可以迭代这些对象并在每个对象上调用near方法:

offer.location.each do |location|
  location.near
end

但是,我不认为这将适用于near方法,因为它充当类级别范围。它不适用于个人记录。

Geocoder gem确实提供了可用于单个记录的其他方法,例如distance_from。所以你可以这样做:

offer.location.each do |location|
  location.distance_from([40.714,-100.234])
end

查看Geocoder docs以获取其他可用的方法调用。