我正在运行一个基于Postgresql的新Rails应用程序,但我不明白为什么他们把Postgresql设置成区分大小写,甚至没有提供关闭此功能的选项。
我的意思是,如果有人在我的网站上注册为“Sam”,那么他将无法使用“sam”登录,但可能会出现两个不同的帐户“Sam”和“sam”。这是一场灾难,特别是考虑到所有其他主要数据库都不区分大小写。
现在,查找用户时,不再只需要按照用户名搜索,还需要检查每种可能的大小写组合。这是非常麻烦的,并且容易导致错误。
我无法相信在Rails中没有避免这种情况的方法,因为这破坏了框架的主要原则:数据库独立性。
是否有更好的方法来实现不区分大小写的用户名/电子邮件模式?
我的意思是,如果有人在我的网站上注册为“Sam”,那么他将无法使用“sam”登录,但可能会出现两个不同的帐户“Sam”和“sam”。这是一场灾难,特别是考虑到所有其他主要数据库都不区分大小写。
现在,查找用户时,不再只需要按照用户名搜索,还需要检查每种可能的大小写组合。这是非常麻烦的,并且容易导致错误。
User.find_by_name(params[:name])
我必须这样做。
User.all(:conditions=>["name ILIKE ?", params[:name]]).first
我无法相信在Rails中没有避免这种情况的方法,因为这破坏了框架的主要原则:数据库独立性。
是否有更好的方法来实现不区分大小写的用户名/电子邮件模式?
User.find_by_name(params[:name].downcase)
- Mark Thomas