什么会导致我无法使用Rails Admin编辑User
记录?
我可以编辑其他所有记录,但是当我尝试编辑此特定记录时,我收到此错误:
User failed to be updated
- Email has already been taken
我使用Devise进行用户注册,以及此模型验证:
validates :email, uniqueness: { case_sensitive: false }
我转到Rails Admin中的用户编辑表单,更改其他字段并在提交时获取上述错误。这真的很奇怪,我试图看看是否有任何我可能错过的想法。
为什么在我更新记录时会触发此验证?只有一条记录包含该特定的电子邮件值,而这是我正在编辑的记录。
答案 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
但是,我认为更好不来使用它。
最适合我的解决方案是更新或删除重复的电子邮件。因此,您可以再次使用验证方法的全部功能。