Я на самом деле не эксперт по SQL, и мне очень трудно объединить объединения (даже больше, чем вычисление нескольких НЕ как if(!(foo != !bar & (!baz)))
), но я чувствую, что либо строка :joins
, либо :include
строка избыточна или даже неверна.
(Я очистил ваш запрос, чтобы понять его, пожалуйста, сделайте то же самое с вопросом):
@articles = Article.find(:all,
:conditions=>"vectors @@ to_tsquery('büch')",
:joins=>" INNER JOIN users ON users.id = articles.user_id",
:include=>:user,
:origin=>"Augustusplatz,8,leipzig,germany")
Полагаю, либо модель пользователя, либо статья должны определять их отношение, поэтому вам не нужно ручное соединение или что вы удаляете включение.
Но из этого кода я не вижу, где фактически рассчитывается расстояние (возможно, какое-то автоматическое в GeoKit?). Расстояние должно быть «названо» с SQL-кодом, например:
SELECT (some_heavy_calculation(user.lat, user.long)) AS distance, ... ;
Таким образом, вы можете ссылаться на расстояние в заказе по выражению, я не думаю, что база данных заботится, если объект ruby не содержит значения.
Возможно, если бы вы показали нам сгенерированный SQL, который вызывает ошибки, и вы манипулировали SQL, мы могли бы лучше понять ...