Локально я разрабатываю с SQLite, но на своем производственном хосте я использую PostgreSQL. Локально все хорошо, но не так на производственном хосте.
Я создал поисковую форму, с помощью которой я могу оценивать все данные в моей базе данных с любой комбинацией, которая мне нравится. Кажется, это работает нормально, если я не использую логические поля и / или поля даты. Мне кажется, PostgreSQL не очень нравится мой код…
Итак, вот пример кода:
unless params[:analysis][:sporty].blank?
tmp_conditions_customer << ["(sporty ILIKE ?)", "%#{params[:analysis][:sporty]}%"]
end
Это оценивается как
SELECT COUNT(*) FROM "customers" WHERE ((sporty ILIKE '%%')
Почему это так или иначе? Почему '%%'?
Для тестирования развертывания я использую Heroku с плагином Exceptional. Этот плагин дает мне следующую подсказку:
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Спасибо Исключительно, но что, черт возьми, это значит? :-D Тип приведений для запросов SQL? Как это сработает?
В моей миграции поле базы данных выглядит так:
t.boolean :sporty
И в форме, где я создаю эти данные, я использую этот код
<%= f.label :sporty %><br />
<%= f.select :sporty, options_for_select({ "Ja" => true, "Nein" => false }), { :include_blank => '-----'} %>
Как я уже упоминал, SQLite - мой друг, и, похоже, гораздо более строгая оценка PostgreSQL вызывает проблемы.
Заранее спасибо за помощь.