Вот несколько вариантов для вас.
Во-первых, LIKE уже без учета регистра, но для Postgres вам придется использовать ILIKE длясделайте ваш поиск нечувствительным к регистру.
Customer.where('firstname LIKE ?', "%john%").first.name
=> 'John'
Во-вторых, если вы хотите сравнить использование нечувствительности к регистру с сопоставлениями, не соответствующими шаблону, такими как <>, =, <= и т. д., то вы можете использоватькоманда COLLATE для наложения нечувствительных к регистру совпадений: </p>
Customer.where('firstname COLLATE utf8_unicode_ci = ?', 'john').first.name
=> 'John'
Кажется, что у Postgres еще нет команды COLLATE , но вы можете узнать больше о параметрах поиска без учета регистра здесь .В общем, когда вы хотите выполнить сопоставление с образцом или сложные запросы, вы не сможете сделать это независимо от базы данных.Я рекомендую использовать единую систему баз данных как при разработке, так и при производстве.Это гарантирует, что ваши запросы также будут вести себя одинаково в обеих средах, что должно привести к уменьшению количества ошибок.Если вы обнаружите необходимость поддержки нескольких систем баз данных, то лучше всего просто создать два разных запроса - один для запуска на MySQL и один для запуска на Postgres, например.