Ruby on rails Rails-ActiveRecord::RecordNotUnique在OmniAuthCallbackControllerFaceBook中

Ruby on rails Rails-ActiveRecord::RecordNotUnique在OmniAuthCallbackControllerFaceBook中,ruby-on-rails,facebook,activerecord,devise,omniauth,Ruby On Rails,Facebook,Activerecord,Devise,Omniauth,我正在使用facebook身份验证登录我的应用程序。我做的和这个链接完全一样 第一次注册总是成功的。但是当你尝试注册第二个帐户时。我得到以下错误 我想我不确定是否必须使用allow_blank:true。有什么帮助吗?提前感谢。如果您不打算使用Desive的密码验证,您只需创建一个迁移来删除索引: rails g migration RemoveEmailIndexFromUsers 然后在迁移过程中: def change remove_index :users, :email end

我正在使用facebook身份验证登录我的应用程序。我做的和这个链接完全一样

第一次注册总是成功的。但是当你尝试注册第二个帐户时。我得到以下错误


我想我不确定是否必须使用allow_blank:true。有什么帮助吗?提前感谢。

如果您不打算使用Desive的密码验证,您只需创建一个迁移来删除索引:

rails g migration RemoveEmailIndexFromUsers
然后在迁移过程中:

def change
  remove_index :users, :email
end
并从用户模型中删除:database_authenticable模块,将其从designe调用中删除

但我不想把Desive用于纯OAuth应用程序。该设计的主要优点是它是一个现成的密码认证解决方案。它试图填补许多空缺,因此相当复杂


当然你可以在OmniAuth中使用它,但是覆盖Desive的控制器、视图和参数几乎和在Warden中使用一样多的工作

也许这两次电子邮件地址都是。这将导致冲突,因为该列上似乎存在唯一性约束。没错。但我并不认为我的邮件专栏是独一无二的,因为我的应用程序完全依赖于omniauth facebook。但AFAIK设计了我不想要的电子邮件专栏的唯一性检查。那么,如何允许这一点呢?我甚至删除了:可验证的设计。仍然不起作用@这有帮助吗?Thanj@max.看起来你的迁移是干净而直接的。但是我已经在这个链接中使用了迁移。不知道你的和这个有什么区别。该答案中的迁移还删除了电子邮件列上的NOTNULL约束。它还显式地设置了向上/向下-我相信rails可以自动计算出删除索引的相反顺序,所以这有点超级糟糕。