내 사이트에서 geokit 기반 위치 검색이 다소 복잡합니다. 요컨대, 나는 "사업"이라는 다른 모델에 속하는 "캠페인"이라는 모델을 가지고 있습니다. 사이트에서 검색 할 때 사용자는 '캠페인'을 검색하지만 해당 캠페인 비즈니스 이름을 검색하면 결과에 모든 적절한 모델이 표시되기를 바랍니다. 이를 위해 검색에서 조인을하고 있습니다.geokit 문제를 사용하여 레일스에서 위치 기반 검색
사용자가 geofit plugin과 gem을 추가로 설치하여 사용자가 원산지 (지정된 위치)에서 설정된 거리 내에서만 검색 할 수 있도록합니다. 그러나이 위치 기능을 사이트에 추가하면 이상한 결과가 발생합니다. 나는 다음과 같은 검색을 사용하는 경우
(간결 간단하지만, 콘솔에서 테스트) : 내가하려고하면
[#<Campaign id: 12, user_id: 4, business_id: 8, created_at: "2011-01-14 16:22:31", updated_at: "2011-01-14 16:25:20", lat: #<BigDecimal:2ad295a9eda8,'0.34154891E2',18(18)>, lng: #<BigDecimal:2ad295a9ed08,'-0.118358834E3',18(18)>>]
그러나 :
Campaign.find(:all,
:joins => :business,
:conditions => ['businesses.name LIKE ?', "%Koo Koo Roo%"]
)
내가이 적절한 결과를 얻을 다음과 같이 geokit 기반 위치 검색 매개 변수를이 검색에 추가하십시오.
Campaign.find(:all,
:joins => :business,
:origin => "90066",
:within => 25,
:conditions => ['businesses.name LIKE ?', "%Koo Koo Roo%"]
)
다음과 같은 결과가 나타납니다. t :
[#<Campaign id: 8, user_id: 4, business_id: 8, created_at: "2011-01-14 16:25:20", updated_at: "2011-01-14 16:25:20", lat: #<BigDecimal:2ad29933e618,'0.34154891E2',18(18)>, lng: #<BigDecimal:2ad29933e578,'-0.118358834E3',18(18)>>]
거의 동일합니다. 유일한 차이점은 두 번째 결과에서 business_id를 Campaign ID로 전달한 것으로 보입니다. 나는 이것을 두 번 확인했으며 두 번 모두 똑같은 경우 캠페인 id가 business_id로 바뀝니다.
내가 언급해야 할 것은 이것이 무엇이든 상관 없다는 것입니다.
내가 뭘 잘못하고 있니? 내가 놓친 게 있니? 나는 그것을 이해하는 것처럼 보일 수 없다. 그것은 나에게 소리가 날 것으로 보인다. 그러나 명백하게 그렇지 않다! geokit이 결과를 어떻게 망칠 수 있었는지 이해할 수 없습니다. 내 모델
는 단순히 있습니다
Business.rb
has_many :campaigns
Campaign.rb
belongs_to :business
어떤 도움
주시면 감사하겠습니다. 나는 일종의 결사를 놓치고 있습니까? 지토 킷 캐싱이 켜져 있지 않습니다.감사합니다!
나는 이것을 알아 냈습니다. 단순히 '조인'을 '포함'으로 변경하는 문제였습니다. 왜 이것이 제대로 작동하는지 잘 모르겠지만 geokit github 페이지에서 geokit에 조인 문제가 있다고 읽었습니다. 그래서이를 변경하고 겉으로는 효과가 있습니다! – goddamnyouryan