gpt4 book ai didi

ruby-on-rails - 使用 Postgres 的 Rails 区分大小写的应用程序

转载 作者:行者123 更新时间:2023-11-29 11:42:12 26 4
gpt4 key购买 nike

我在 Postgresql 上运行一个新的 Rails 应用程序,我不明白为什么他们让 Postgreql 区分大小写,甚至没有选择关闭它。

我的意思是,真的,如果有人在我的网站上注册为“Sam”,将无法以“sam”身份登录,但可以有两个不同的帐户“Sam”和“sam”。这是一场灾难,尤其是考虑到所有主要数据库都不区分大小写这一事实。

现在不用去寻找像这样的用户

User.find_by_name(params[:name])

我必须这样做

User.all(:conditions=>["name ILIKE ?", params[:name]]).first

我无法相信在 Rails 中无法避免这种情况,因为它破坏了框架的主要原则之一:数据库独立性。

有没有更好的方法来实现不区分大小写的用户名/电子邮件模式?

最佳答案

有一个名为 citext 的贡献模块,它创建了一个不区分大小写的文本类型。我认为它仅从 pg 9.0 开始默认包含。

此外,您可以轻松地创建唯一索引以防止 sam、Sam 和 SAM 同时拥有一个帐户:

创建表abc(用户文本);在 abc (upper(users)) 上创建唯一索引 abc_users_ci;插入 abc 值('sam');插入 abc 值('Sam');错误:重复键值违反唯一约束“abc_users_ci”

多多!或者你可以提示 pgsql 不像 mysql。

关于ruby-on-rails - 使用 Postgres 的 Rails 区分大小写的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com