Rails 4 Devise / Omniauth电子邮件存在于数据库错误中
我正在“撞击”我的头撞墙,试图解决这个问题。 我决定允许用户通过Twitter,Google,我的网站或Facebook登录。 问题是twitter不提供电子邮件,所以我试图通过用户名添加用户。 问题是设计不断检查电子邮件,当我不需要它时,我得到PG ::错误:错误:重复键值违反唯一约束“index_users_on_email”DETAIL:Key(email)=()已经存在。 :INSERT INTO“users”(“created_at”,“name”,“provider”,“uid”,“updated_at”,“username”)VALUES($ 1,$ 2,$ 3,$ 4,$ 5,$ 6)返回“id”。
我不知道该怎么做。 我在我的数据库中创建了一个用户名列,我确保将它添加到我的devise.rb intializer中, config.authentication_keys = [ :username ]
我认为这是因为默认的Devise安装在电子邮件库存上创建了唯一的密钥。 在你的情况下,它是空的,因此第二个用户没有唯一的(因为第一个用户占用了空字符串)。
在我的情况下迁移
class AllowNullEmail < ActiveRecord::Migration def up remove_index :users, :email change_column :users, :email, :string, :null => true end def down change_column :users, :email, :string, :null => false add_index :users, :email, unique: true end end
- Twitter ::错误::在PostsController中未经授权#create – 令牌无效或过期
- 用于noob的Rails身份validation策略
- puma生产服务器在后台:omniauth记录到stdout失败导致错误
- 适用于Apache的rails app的OpenID
- authlogic UserSession.create(@user)给予unauthorized_record
- 使用Devise和Omniauth的路由问题
- 使用OmniAuth时,如何指定用户的Facebook帐户需要哪些访问权限?
- 如何将/ auth /:provider中的omniauth路由更改为/ myapp / auth /:provider
- Omniauth-Facebook回调不会在Rails可安装引擎中初始化