Konwersja do górnej jest najlepsza, ponieważ obejmuje kompatybilną składnię dla 3 najczęściej używanych baz danych Railsów. PostgreSQL, MySQL i SQLite obsługują tę składnię. Ma (drugorzędną) wadę, że musisz wpisać w łańcuch wielkie litery w swojej aplikacji lub w swoim łańcuchu warunków, co sprawia, że jest trochę brzydsza, ale myślę, że kompatybilność, którą zyskujesz, sprawia, że jest warta zachodu.
Zarówno MySQL, jak i SQLite3 mają operatora LIKE niezależnego od wielkości liter. Tylko PostgreSQL ma rozróżniany wielkość liter LIKE operatora i specyficzny dla PostgreSQL (zgodnie z instrukcją) operator ILIKE dla wyszukiwań niewrażliwych na wielkość liter. Możesz podać ILIKE inaczej z LIKE w twoich warunkach w aplikacji Rails, ale pamiętaj, że aplikacja przestanie działać pod MySQL lub SQLite.
Trzecią opcją może być sprawdzenie, który silnik bazy danych jest używany i odpowiednio zmodyfikować ciąg wyszukiwania. Można to zrobić lepiej poprzez włamywanie się do adapterów połączenia ActiveRecord/monkeypatching i modyfikowanie ciągu zapytań przez adapter PostgreSQL w celu zastąpienia "LIKE" dla "ILIKE" przed wykonaniem zapytania. To rozwiązanie jest jednak najbardziej zawiłe iw świetle łatwiejszych sposobów, jak na przykład obstawianie obu terminów, myślę, że to nie jest wysiłek (chociaż dostaniesz dużo ciastek za robienie tego w ten sposób).
Jeśli używasz PostgreSQL w prodution, korzystaj również z PostgreSQL. Nie będzie to pierwszy numer, na który napotkasz, a także oznacza, że nie możesz wykorzystać niczego, co jest specyficzne dla PostgreSQL. –