我有一个相当复杂的Rails应用程序构建在Twitter的API之上,并希望使整个应用程序不区分大小写。
到目前为止,我们已尽可能将所有用户名和其他字符串转换为.downcase并使用默认区分大小写的搜索,但这会导致问题,“用户名”和“用户名”被视为不同的用户
我是否需要设置此验证:
validates_uniqueness_of:username,:case_sensitive =>假
我的每个模型上的某个地方(有很多)并从应用程序中删除.downcase的所有实例(有一个TON)?还有其他想法吗?
注意:这个应用程序尚未生效,所以我不介意在必要时擦除它现在存储的所有数据。
答案 0 :(得分:1)
我使用Rack Middleware解决了它,请参阅此页:http://gehling.dk/2010/02/how-to-make-rails-routing-case-insensitive/
更新:此代码已更新,以便与Rails 3一起使用,因此仍然是一个非常好的选择。
答案 1 :(得分:0)
也许在create选项上设置一个过滤器,在验证之前将所有数据转换为小写?然后,假设所有数据都是小写的。否则,只需编写自定义验证器。
答案 2 :(得分:0)
您可以构建一个具有常用验证功能的mixin,例如用户名验证,添加不区分大小写,并将其混合到您的所有模型中。