Это затягивает мне нервы!
Сценарий:
Я использую плагин геокодера: http://github.com/alexreisner/geocoder/
У меня есть две модели: адрес и пункт
широта и долгота в адресе и Item belongs_to :address
Теперь, когда я пытаюсь выполнить поиск рядом:
Item.near(Person.first.address.coordinates, 20)
на элементе происходит сбой со следующим SQL:
Неизвестный столбец «широта» в «списке полей»:
SELECT *, 3956 * 2 * ASIN(SQRT(POWER(SIN((51.3883 - latitude) * PI() / 180 / 2), 2) + COS(51.3883 * PI()/180) * COS(latitude * PI() / 180) * POWER(SIN((6.65326 - longitude) * PI() / 180 / 2), 2) )) AS distance FROM `items` WHERE ((latitude BETWEEN 51.0984449275362 AND 51.6781550724638 AND longitude BETWEEN 6.188777824785 AND 7.117742175215) AND (`items`.`accepted` IS NULL AND `items`.`taken_by` IS NULL)) ORDER BY distance ASC
Не смотрите на странные математические вещи в запросе,
проблема заключается в предложении FROM и WHERE, потому что
атрибуты широты и долготы являются частью таблицы адресов,
поэтому простое дополнение к Query решит проблему:
... FROM items, addresses WHERE ...
... null)) AND items.address_id = addresses.id ORDER BY ...
Я просто хочу добавить таблицу в поле ОТ и условие: (
Я попытался использовать несколько named_scopes, используя: include и: joins, но ни один из них не сработал!
Кто-нибудь знает решение этой проблемы? Как я могу вставить это в объект ActiveRecord в области?