【发布时间】:2013-04-02 22:35:29
【问题描述】:
我已经使用 MySQL 9 年了,现在有一个新的 Rails 3.2 应用程序,我在其中使用 PostgreSQL。我被我为项目带来的几个假设所困扰。
使用 MySQL,我可以设置数据库设置,以便:
plan = Plan.find_by_name("platinum")
将返回一条记录,即使数据库中的值为Platinum。使用 PostgreSQL 的默认设置,它不会那样工作。
我确定这一定是一个常见问题。我当然不希望我的客户必须输入完全匹配的大小写。由于某种原因,我在网上找不到任何东西,我只是在 PostgreSQL 的网站上找到了 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)
【问题讨论】:
-
看起来这可能是几乎相同的问题:stackoverflow.com/questions/2220423/… 答案似乎相当不令人满意,但可能是正确的。对不起。
标签: ruby-on-rails-3 postgresql activerecord ruby-on-rails-3.2