Поиск приложения rails для целого числа на героку

Я добавляю панель поиска в свое приложение rails. Он отлично работает для поиска текста, но я также хочу найти свое поле «дата», которое является целым числом. Я уверен, что есть простой ответ на этот вопрос, но я искал везде в Интернете и не могу понять. Я запускаю MySQL локально, и он работает нормально, потому что база данных преобразует «дату» в строку. Когда я нажимаю на Heroku, он ломается, потому что база данных PG хочет найти целое число. Вот мой код, который отлично работает на MySQL:

def self.search(search)
  if search
    losearch = search.downcase
    find(:all, :conditions => ['lower(description) LIKE ? OR lower(artist) LIKE ? OR     lower(album) LIKE ? OR lower(date) LIKE ?', "%#{search.downcase}%", "%#{search.downcase}%", "%#{search.downcase}%", "%#{search.downcase}%"], order: "created_at desc")
  else
    find(:all, order: "created_at desc")
  end
end    

Я знаю, что дата должна быть что-то вроде date = ?, но я не совсем понимаю.


person Tony Tambe    schedule 23.09.2013    source источник
comment
Сначала вы должны решить, какой формат даты вы собираетесь разрешить пользователю вводить.   -  person Rajesh Kolappakam    schedule 23.09.2013
comment
Мое поле имеет только название даты. Пользователь вводит год. Например, они просто введут 2011 год. Я хочу найти 2011 год в строке поиска и вернуть элементы с введенным 2011 годом. Он работает с MySQL, потому что 2011 преобразуется в строку 2011. Однако Heroku это не нравится...   -  person Tony Tambe    schedule 23.09.2013
comment
ты пробовал search.to_s.downcase ? Поскольку 2011 входит как целое число, сначала преобразуйте его в строку, а затем выполните остальную часть обработки.   -  person Rajesh Kolappakam    schedule 23.09.2013
comment
Таким образом, ваш столбец date на самом деле представляет собой целое число, которое содержит номер года, и если кто-то ищет 11, вы хотите найти годы 1109, 1911, 2011 и 2112?   -  person mu is too short    schedule 23.09.2013
comment
Раджеш: я все еще получаю сообщение об ошибке на Heroku с помощью search.to_s.downcase. Это может быть проблема Heroku, потому что иногда для обновления требуется время. Я дам Вам знать.   -  person Tony Tambe    schedule 23.09.2013
comment
mu - Нет, это сайт обзоров музыки. Пользователь вводит год выпуска альбома как часть формы. Я хочу выполнить поиск в базе данных за 2011 год и найти эти обзоры с целыми числами 2011 года.   -  person Tony Tambe    schedule 23.09.2013
comment
Итак, если вы проверяете равенство, почему вы вообще пытаетесь использовать LIKE?   -  person mu is too short    schedule 23.09.2013
comment
LIKE работает для текстового поля, и все это работает локально в MySql. Вот сайт, если это поможет: thetens.us   -  person Tony Tambe    schedule 23.09.2013
comment
Я мог бы просто изменить формат даты на строку, которая будет работать локально, но не взорвет ли это базу данных моего приложения на героку?   -  person Tony Tambe    schedule 24.09.2013


Ответы (1)


Единственный правильный ответ, который кто-либо может вам дать, заключается в том, что вы должны использовать PostgreSQL в разработке, поскольку вы используете PostgreSQL в производстве. Вы будете продолжать сталкиваться с проблемами до тех пор, пока ваша база данных разработки сильно отличается от вашей рабочей базы данных. Если вы разрабатываете на Mac, попробуйте установить Postgres.app, это один клик. Добавьте гем pg в свой Gemfile, и все будет готово.

person Joost Baaij    schedule 08.02.2014