QA@IT
«回答へ戻る

ironsand さんのコメントの情報を追記しました。

130
 Oauth するサービスは複数あるので User に対して複数あるはずなのでこのような構成になりました。
 「Twitterだけ!」とかになれば User ひとつにしたりすると思います。
 
-[Doorkeeper](http://www.doorkeeper.jp/) が Oauth で認証した場合でもメールアドレスが必須なので似たような設計なのかと勝手に思っています。
+[ironsand](http://qa.atmarkit.co.jp/users/ironsand) さんがコメントで捕捉していただきました。
+[social-login-in-rails](https://github.com/mohitjain/social-login-in-rails) というサンプルプロジェクトが似たような設計になっているそうです。oauth の情報は [Authorization](https://github.com/mohitjain/social-login-in-rails/blob/master/app/models/authorization.rb) というモデルにあります。
+
+[結びつく User が存在しない場合はoauthの情報を利用したりして作成していました。](https://github.com/mohitjain/social-login-in-rails/blob/e9031b938582f551e5998420c06595418def0caa/app/models/user.rb#L23-L29)
+
+[Doorkeeper](http://www.doorkeeper.jp/) が Oauth で認証した場合でもメールアドレスが必須なので、似たような設計なのかと勝手に思っています。

以前利用した場合はような以下のような設計にしました。

Blog *- User -* OmniUser

User から Blog は 1対多で、 User から OmniUser が1対多です。

Oauth でしか認証しない場合でも User のインスタンスを作成します。
メールアドレスの登録を不要にしたい場合はまあ無理矢理なんとかするとして、パスワードはランダムな値に設定しておきます。
Oauth するサービスは複数あるので User に対して複数あるはずなのでこのような構成になりました。
「Twitterだけ!」とかになれば User ひとつにしたりすると思います。

ironsand さんがコメントで捕捉していただきました。
social-login-in-rails というサンプルプロジェクトが似たような設計になっているそうです。oauth の情報は Authorization というモデルにあります。

結びつく User が存在しない場合はoauthの情報を利用したりして作成していました。

Doorkeeper が Oauth で認証した場合でもメールアドレスが必須なので、似たような設計なのかと勝手に思っています。

以前利用した場合はような以下のような設計にしました。

```
Blog *- User -* OmniUser
```

User から Blog は 1対多で、 User から OmniUser が1対多です。

Oauth でしか認証しない場合でも User のインスタンスを作成します。
メールアドレスの登録を不要にしたい場合はまあ無理矢理なんとかするとして、パスワードはランダムな値に設定しておきます。
Oauth するサービスは複数あるので User に対して複数あるはずなのでこのような構成になりました。
「Twitterだけ!」とかになれば User ひとつにしたりすると思います。

[ironsand](http://qa.atmarkit.co.jp/users/ironsand) さんがコメントで捕捉していただきました。
[social-login-in-rails](https://github.com/mohitjain/social-login-in-rails) というサンプルプロジェクトが似たような設計になっているそうです。oauth の情報は [Authorization](https://github.com/mohitjain/social-login-in-rails/blob/master/app/models/authorization.rb) というモデルにあります。

[結びつく User が存在しない場合はoauthの情報を利用したりして作成していました。](https://github.com/mohitjain/social-login-in-rails/blob/e9031b938582f551e5998420c06595418def0caa/app/models/user.rb#L23-L29)

[Doorkeeper](http://www.doorkeeper.jp/) が Oauth で認証した場合でもメールアドレスが必須なので、似たような設計なのかと勝手に思っています。

回答を投稿

以前利用した場合はような以下のような設計にしました。

Blog *- User -* OmniUser

User から Blog は 1対多で、 User から OmniUser が1対多です。

Oauth でしか認証しない場合でも User のインスタンスを作成します。
メールアドレスの登録を不要にしたい場合はまあ無理矢理なんとかするとして、パスワードはランダムな値に設定しておきます。
Oauth するサービスは複数あるので User に対して複数あるはずなのでこのような構成になりました。
「Twitterだけ!」とかになれば User ひとつにしたりすると思います。

Doorkeeper が Oauth で認証した場合でもメールアドレスが必須なので似たような設計なのかと勝手に思っています。

以前利用した場合はような以下のような設計にしました。

```
Blog *- User -* OmniUser
```

User から Blog は 1対多で、 User から OmniUser が1対多です。

Oauth でしか認証しない場合でも User のインスタンスを作成します。
メールアドレスの登録を不要にしたい場合はまあ無理矢理なんとかするとして、パスワードはランダムな値に設定しておきます。
Oauth するサービスは複数あるので User に対して複数あるはずなのでこのような構成になりました。
「Twitterだけ!」とかになれば User ひとつにしたりすると思います。

[Doorkeeper](http://www.doorkeeper.jp/) が Oauth で認証した場合でもメールアドレスが必須なので似たような設計なのかと勝手に思っています。