Я незнаком с учебником, который вы используете, но похоже, что это проблема с базой данных, а не проблема Ruby / Rails. Проблема в том, что ваша база данных чувствительна к регистру, поэтому «Концерт» совпадает, потому что это то, что есть в БД, а «концерт» - нет, потому что это не соответствует «Концерт».
В любом случае, реальное решение будет зависеть от вашей базы данных и от того, как она настроена, но давайте предположим, что это MySQL, тогда ваше решение будет выглядеть так
searchable_fields.each_pair do |field, value|
conditions << "#{field} LIKE LOWER(?)"
values << "%#{value.downcase}%"
end
value.downcase изменит входную строку на все строчные, а функция LOWER sql сделает то же самое на стороне базы данных. Теперь они должны совпадать. Если вы используете SqlLite или Postgres, вам нужно искать их строчные функции, но все остальное будет таким же.