Почему этот запрос не работает на Heroku? - PullRequest
0 голосов
/ 21 августа 2011

Попытка реализовать простой поиск с RoR и Heroku.Это хорошо работает на локальном хосте, но как только я нажму на Heroku, поиск не даст результатов.Я использую SQlite локально, а Heroku использует Postgres, правильно?Я думаю, что это проблема, но после долгих исследований я не могу найти решение.Есть идеи, что может происходить?Помощь оценена как всегда.

def self.search(search)
  if search
   where("title LIKE ? OR description LIKE ?", "%#{search}%", "%#{search}%")
  else
   find(:all)
  end
end

1 Ответ

4 голосов
/ 21 августа 2011

Возможно, потому что LIKE в SQLite (частично) нечувствителен к регистру, но LIKE в PostgreSQL чувствителен к регистру.Попробуйте это:

where("LOWER(title) LIKE ? OR LOWER(description) LIKE ?", "%#{search.downcase}%", "%#{search.downcase}%")

В PostgreSQL также есть ILIKE как нечувствительная к регистру версия LIKE, но SQLite (или стандартный SQL) этого не делает, поэтому не следует использовать ILIKE, если вы специально не нацелены на PostgreSQL.

И, если вы будете публиковать в Heroku, переключите свою среду разработки на PostgreSQL, вы избавите себя от горя и путаницы.

Другая возможность заключается в том, что у вас нет данных (или каких-либо других данных).соответствующие данные) в базе данных Heroku.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...