У меня довольно сложный (или, кажется, так) поиск по геокитам на моем сайте. Короче говоря, у меня есть модель под названием «Кампании», которая принадлежит другой модели под названием «Бизнес». Когда я ищу на сайте, пользователи ищут «Кампании», но я хочу, чтобы все соответствующие модели отображались в результатах, если они ищут это название компании Кампании. Для этого я делаю объединения в поиске.
У меня дополнительно установлены плагин 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)>>]
Но если я попытаюсь добавить в этот поиск параметры поиска местоположения на основе геокитов, например:
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 в качестве идентификатора кампании. Я подтвердил это дважды, и оба раза это одно и то же, идентификатор кампании заменяется на business_id.
Я должен упомянуть, что это правда, несмотря ни на что: на расстоянии я вхожу.
Что я здесь не так делаю? Я что-то пропустил? Я не могу понять это, мне кажется, все это звучит правдоподобно, но, очевидно, нет! Я не понимаю, как геокит может так облажать результаты.
в моих моделях у меня просто есть:
Business.rb
has_many :campaigns
Campaign.rb
belongs_to :business
Любая помощь будет оценена. Я скучаю по какой-то ассоциации? У меня не включено кэширование геокитов.
Спасибо!