如何从整个Rails应用程序中删除区分大小写?

时间:2010-07-08 19:51:14

标签: ruby-on-rails validation case-insensitive

我有一个相当复杂的Rails应用程序构建在Twitter的API之上,并希望使整个应用程序不区分大小写。

到目前为止,我们已尽可能将所有用户名和其他字符串转换为.downcase并使用默认区分大小写的搜索,但这会导致问题,“用户名”和“用户名”被视为不同的用户

我是否需要设置此验证:

validates_uniqueness_of:username,:case_sensitive =>假

我的每个模型上的某个地方(有很多)并从应用程序中删除.downcase的所有实例(有一个TON)?还有其他想法吗?

注意:这个应用程序尚未生效,所以我不介意在必要时擦除它现在存储的所有数据。

3 个答案:

答案 0 :(得分:1)

我使用Rack Middleware解决了它,请参阅此页:http://gehling.dk/2010/02/how-to-make-rails-routing-case-insensitive/

更新:此代码已更新,以便与Rails 3一起使用,因此仍然是一个非常好的选择。

答案 1 :(得分:0)

也许在create选项上设置一个过滤器,在验证之前将所有数据转换为小写?然后,假设所有数据都是小写的。否则,只需编写自定义验证器。

答案 2 :(得分:0)

您可以构建一个具有常用验证功能的mixin,例如用户名验证,添加不区分大小写,并将其混合到您的所有模型中。