2014-09-29 12 views
0

모델이 Offer입니다. 각 Offer has_one Location. Geocoder 보석 방법 near을 사용하여 근처에있는 모든 것을 얻으려고합니다. Location s. 방법은 다음과 같이 사용됩니다배열에 has_one 연관 집합을 할당합니다.

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

내가 위치를 관련된 각 Offer 년대에, Location.near()에, Location 교체하는 방법을 모르겠어요. 각 Offer 개체의 위치는 @first_offer.location으로 액세스 할 수 있지만 near 메서드는 전체 Location 테이블에서 호출됩니다. Offer.location을 배열로 모아서 어떻게이 방법을 사용할 수 있습니까?

미리 감사드립니다. 나는 이치에 맞기를 바란다. 그렇지 않은 경우 댓글을 남기십시오.

답변

1

귀하의 질문을 완전히 이해하고 있는지 확실하지 않지만 최선을 다해 답변 해 드리겠습니다. 이러한 개체를 반복하고 각각에 near 메소드를 호출 할 수 있도록 offer.location 위치 개체의 컬렉션을 반환 그러나

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을 확인하십시오.

+0

감사합니다. 제안한 다른 방법을 찾아 볼 것입니다. – domi91c