簡體   English   中英

使用geokit問題在Rails中進行基於位置的搜索

[英]Location based search in Rails using geokit problem

我的網站上有一個基於geokit的相當復雜(或看起來如此)的位置搜索。 簡而言之,我有一個名為“ Campaigns”的模型,該模型屬於另一個名為“ Businesses”的模型。 當我在網站上搜索時,用戶正在搜索“廣告系列”,但是如果他們搜索該Campaigns公司名稱,我希望所有合適的模型都顯示在結果中。 為此,我正在進行搜索聯接。

此外,我還安裝了geokit插件和gem,以便用戶只能在距原始位置(他們提供的位置)一定距離內才能獲得這些搜索的結果。 但是,當我將此定位功能添加到站點中時,卻得到了奇怪的結果。

如果我使用以下搜索(為了簡潔起見,但在控制台中對其進行了測試):

Campaign.find(:all, 
              :joins => :business, 
              :conditions => ['businesses.name LIKE ?', "%Koo Koo Roo%"]
             )

我得到適當的結果是:

[#<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)>>]

但是,如果我嘗試將基於geokit的位置搜索參數添加到此搜索中,如下所示:

Campaign.find(:all, 
              :joins => :business, 
              :origin => "90066", 
              :within => 25, 
              :conditions => ['businesses.name LIKE ?', "%Koo Koo Roo%"]
             )

我得到以下結果:

[#<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緩存。

謝謝!

這是因為“ id”字段已被狡猾的聯接代碼覆蓋。 加入后,您將擁有兩個“ id”字段(一個用於業務,一個用於廣告系列)。 數據庫猜測,如果沒有明確的指令說明哪個ID是“ the”。

不幸的是,其中一個版本的rails有一個錯誤,即它沒有明確指出主要的Active Record ID(在本例中為Campaign.id)是很重要的ID。與Business.id的ID。

您已經發現了簡單(但更加棘手)的修復程序...另一個是升級rails。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM