ログインはメールアドレスでさせておいてログイン後に各種SSOサービスとの連携を済ませる方法を考えてみます。 まず、お手軽にやりたいのでDeviseとOmniauthを使うのは確定です。omniauth-facebookやomniauth-twitterなどを使うと簡単に連携できますよね。 ところが、よくあるDevise+Omniauthのサンプルを見ると大体ユーザーモデルにOAuthの結果を結びつけていることが多いです。ユーザー1人に対してサービス1種類が関連づけられるみたいな。 でも複数のサービスと接続したいということもありそうです。というか、実際多くのサービスでログインしたあとで他のサービスとの関連付けを行ったりできます。QiitaとかChatworkとか、Gunosyとかもそうだったかも。 モデルを分けます ユーザーモデルにサービスと認証したフィールドを持たせるからいけないのであって