如何在使用postgresql的Rails中执行不区分大小写的顺序

我正在将我的开发环境从sqlite3切换到postgresql 8.4,并有最后一道障碍。

在我原来的我有一个辅助方法下面的行;

result = Users.find(:all, :order => "name collate NOCASE") 

这提供了一个非常好的不区分大小写的search。 我不能复制这个postgresql。 应该很容易 – 任何想法?

谢谢。

 result = Users.find(:all, :order => "LOWER(name)") 

从布拉德和弗兰克一点点。

LanecH适用于Rails 3+(包括Rails 4)的stream行解答:

 users = User.order('LOWER(name)') # or create a named scope you can reuse class User < ActiveRecord::Base scope :order_by_name, -> { order('LOWER(name)') } end users = User.order_by_name 

在SQL中你可以使用ORDER BY LOWER(columnname),不知道如何在Ruby中做到这一点。 function索引(也在LOWER(columnname)上)将有助于加快速度。

你有没有考虑将你的列存储为citexttypes? 它真的只是内在呼吁lower()据我所知。 这将是后来自动的。 如果有几次你需要区分大小写的search,这可能不是最好的主意。