Я добавляю панель поиска в свое приложение rails. Он отлично работает, чтобы найти текст, но я также хочу найти поле «дата», которое является целым числом. Я уверен, что есть простой ответ на этот вопрос, но я смотрел всюду онлайн и не могу понять. Я запускаю MySQL локально, и он отлично работает, потому что база данных преобразует «дату» в строку. Когда я нажимаю на Heroku, он ломается, потому что база данных PG хочет найти целое число. Вот мой код, который отлично работает на MySQL:Поиск rails app для integer on heroku
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». Пользователь вводит год. Например, они просто войдут в «2011». Я хочу найти 2011 в строке поиска и вернуть ее с введенным 2011 годом. Он работает с MySQL, потому что 2011 год преобразуется в строку 2011 года. Heroku не нравится, хотя ... –
вы попробовали 'search.to_s.downcase'? Поскольку '2011' входит в число целых чисел, сначала преобразуйте в строку, а затем выполните оставшуюся обработку –