我的网站上有一个相当复杂(或看起来如此)的基于 geokit 的位置搜索。简而言之,我有一个名为“Campaigns”的模型,它属于另一个名为“Businesses”的模型。当我在网站上搜索时,用户正在搜索“广告系列”,但如果他们搜索该广告系列公司名称,我希望所有合适的模型都显示在结果中。为此,我正在搜索中加入。
我还安装了 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 缓存。
谢谢!