Rails 3路由中不区分大小写的用户名

ber*_*000 1 ruby-on-rails case-sensitive case-insensitive

我试图允许用户通过他们的用户名访问他们的帐户,无论他们如何在URL中将其大写.因此,http://example.com/Username将转到与http://example.com/username相同的页面.

我很好,URL的任何其他部分区分大小写(我知道这是标准),但我认为没有必要强迫用户在URL中得到他们的用户名正确的情况.

可以通过仅在routes.rb文件中添加某些设置来完成吗?

我认为这很简单,但显然不是.

我在这里找到了一个看似简单的问题,我认为只有一个答案会有所帮助,而且太过于hacky(由作者自己承认)

Joh*_*gle 5

我相信这不是路由问题,您可以在控制器代码中解决它:

User.where("lower(username) = lower(?)", params[:username]).first!
Run Code Online (Sandbox Code Playgroud)

要么

User.where("lower(username) = ?", params[:username].downcase).first!
Run Code Online (Sandbox Code Playgroud)

要么

User.find(:first, :conditions => [ "lower(username) = ?", params[:username].downcase ])
Run Code Online (Sandbox Code Playgroud)