无法使用Rails管理员编辑用户记录。电子邮件已经被采取

时间:2016-03-01 22:56:45

标签: ruby-on-rails ruby activerecord rails-admin

什么会导致我无法使用Rails Admin编辑User记录?

我可以编辑其他所有记录,但是当我尝试编辑此特定记录时,我收到此错误:

User failed to be updated
- Email has already been taken

我使用Devise进行用户注册,以及此模型验证:

validates :email,     uniqueness: { case_sensitive: false }

我转到Rails Admin中的用户编辑表单,更改其他字段并在提交时获取上述错误。这真的很奇怪,我试图看看是否有任何我可能错过的想法。

为什么在我更新记录时会触发此验证?只有一条记录包含该特定的电子邮件值,而这是我正在编辑的记录。

2 个答案:

答案 0 :(得分:0)

尝试限制您的验证以创建并查看是否会产生影响。

validates :email, uniqueness: { case_sensitive: false }, on: :create

答案 1 :(得分:0)

验证电子邮件的代码是正确的。

您收到了默认验证消息" 电子邮件已被采取",因为您在用户表中有相同电子邮件

它是种子文件的一部分,所以你不记得保存它。 或者已被其他用户保存。

请尝试搜索,例如:

User.find_by(:email => "test_mail_here")
# so you can check duplication ef email.

您的代码的默认验证适用于:创建&更新

您可以使用:

validates :email, uniqueness: { case_sensitive: false }, on: :create

但是,我认为更好来使用它。

最适合我的解决方案是更新或删除重复的电子邮件。因此,您可以再次使用验证方法的全部功能。