【发布时间】:2012-12-13 16:23:04
【问题描述】:
我们有一个带有 Google 登录/注册功能的 Facebook 应用。一些帐户不提供用户名,因此应用程序必须在将对象保存到数据库之前创建一个。
我们目前是这样解决问题的:
user.username = "#{user.email[/^[^@]*/]}_#{user.id.to_s}"
问题是,我们像database/odm一样使用mongodb/mongoid,生成的用户名太长,比如:
hyperrjas_50ad43d11d41c86b27000066
在这种情况下,我们在hyperrjas 之后添加了user.id。
如果用户名已被占用,我们想添加一个唯一编号而不是唯一的 id,例如:
hyperrjas
hyperrjas1
hyperrjas2
hyperrjas3
...
我们该怎么做?
【问题讨论】:
-
您必须知道您的数据库中有多少具有给定名称的用户,我认为如果不对数据库执行查询就不会发生这种情况。
-
谢谢,你能添加一个优化查询到数据库的例子来检查用户名是否已经被占用吗?
标签: ruby-on-rails ruby regex ruby-on-rails-3 mongoid