私は MySQL を 9 年間使用しており、現在は PostgreSQL を使用する新しい Rails 3.2 アプリケーションを持っています。私は、プロジェクトに持ち込んでいるいくつかの仮定に悩まされています。
MySQL を使用すると、次のようにデータベース設定を設定できます。
plan = Plan.find_by_name("platinum")
db の値が であっても、レコードを返しPlatinum
ます。PostgreSQL のデフォルト設定では、そのようには動作しません。
これはよくある問題だと思います。顧客が大文字と小文字を完全に一致させて入力する必要はありません。何らかの理由でオンラインで何も見つけることができません。PostgreSQL の Web サイトで、この機能がサポートされていない 10 年前のサポート ケースを探しているところです。うまくいけば、今では変わっています。
解決済み:
以下の回答のおかげで、これを達成する方法は次のとおりです。
Postgres 9.1+ では、citext
contrib モジュールがコードに同梱されています。必要なことは、psql コマンド ラインで次のように入力することだけです。
create extension citext
これで、citext 列タイプのテーブルを作成できます。
create table people (name ctext);
テストする行をいくつか挿入します。
insert into people (name) values ('ADRIAN');
insert into people (name) values ('adrian');
そしてテスト:
select * from people where name = 'Adrian';
結果:
name
--------
adrian
ADRIAN
(2 rows)