Tra*_*tto 1 ruby devise ruby-on-rails-3
我试图验证我的用户模型中两列是唯一的.我搜索了谷歌,根据我的理解,下面的代码不起作用:
validates :login, :uniqueness=>true
validates :email, :uniqueness=>true
Run Code Online (Sandbox Code Playgroud)
在我的情况下,这样做将验证电子邮件的唯一性,但不会验证登录的唯一性.我设置登录必须在数据库上是唯一的.但是,如果它已经存在,那么所有这一切都会产生运行时错误.我不希望生产中出现错误,因为它会导致500内部服务器错误,用户不会理解.
关于如何验证这两个领域的独特性的任何想法?
使用认证:
更新:
据我所知,问题是由Devise引起的,特别是验证电子邮件和密码的可验证模块.
更新2:
从Devise中删除可验证模块将导致既不检查唯一性.
更新3:
似乎设计不会导致问题.相反,一个名为Devise Invitable的宝石就是.删除此gem会导致验证被触发.此宝石似乎也试图强制验证电子邮件字段.由于这个宝石的性质,它是有道理的,但不应该阻止.
应该可以使用scope,通过设计添加到默认验证.
对于Rails 3版本:
validates :email, :uniqueness => {:scope => :login}
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
1743 次 |
| 最近记录: |