私は Omniauth と Devise を初めての Ruby on Rails アプリケーションに統合しています。現在、グーグルで働いています。
それは機能し、私はそれをすべて愛しています。アプリのリンクをクリックし、Google で認証してからリダイレクトすることで、正常に登録できます...すべて期待どおりです。
プロジェクトで一緒に作業する新しいユーザーを招待する現在のユーザーをサポートする必要があります。これを行うには、現在のユーザーが新しいユーザーの行を作成できるようにし、新しいユーザーの電子メール アドレスを指定します。行はスタブとして追加されるため、新しいユーザーに作業を割り当てることができます。
この後、アプリの Google リンクをクリックし、Google で認証してから、アプリにリダイレクトすることで、新しいユーザーが登録されることを期待しています。
これが発生すると、次のエラーが発生します。
1 error prohibited this user from being saved:
Email has already been taken
理由は理解していますが、動作を変更して、登録ユーザーが彼のために作成されたスタブ化されたユーザー行を引き継ぐことができる正しいフックを見つけるのに苦労しています。
編集: 関連する宝石のリスト(私は思う):
- devise (2.2.3)
- oauth (0.4.7)
- oauth2 (0.8.1)
- omniauth (1.1.3)
- omniauth-facebook (1.4.1, 1.4.0)
- omniauth-google (1.0.2)
- omniauth-google-oauth2 (0.1.13)
- omniauth-oauth (1.0.1)
- omniauth-oauth2 (1.1.1, 1.0.3)
編集 - モジュールの考案
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable