QA@IT
«質問へ戻る

376
本文
 
 この機能を実装するにあたり、どのようにModelを設計すればよいかわからなくなってきました。
 
+- 私の設計
+
 まず私が考えた設計なのですが、
 
 OmniUser(Oauthでのログイン用)、User(メールアドレスでのログイン用)の2つのModelとDBを設計しました。
 OmniUserはuidとproviderというカラムを持っており、この2つが一致した場合にログインできるようにします。
 Userはemailとpasswordというカラムを持っており、この2つが一致した場合にログインできます。
 
+- 問題点
+
 この私の考えた設計の問題点なんですが、
 
 例えばブログというModelを作成する際に、ユーザとブログで1対多関係を結ぶのが自然と思われます。
 ログインはOmniUser、Userどちらか片方のみがログインしているべきであり、両方がログインしている状態があってはいけません。
 このあたりの制御をどう書くかという問題です。
 
+
 どちらの問題も頑張れば書けるのですが、設計の段階でまずい物ではこのあたりの処理がかなり複雑になってしまうのではないかと恐れています。
 
+- 質問
 
 そこで改めて質問なのですが、この様な場合、どのような設計をすればよいでしょうか?ご意見をお聞かせいただけると幸いです。

ソーシャルログインと普通のログインを併用する際の設計

現在、Rails3.2とDevise,Omniauthというログイン用のGemをつかって開発をしているのですが、プログラムの設計で悩んでいます。

具体的に何がしたいかというと、
ブログサービスを開発しているのですが、このサービスにはログイン方法を二種類用意しようと考えています。

一つがTwitter,FaceBook等を使ったOauthでのログイン。
もう一つが一般的な、メールアドレスとパスワードを入力してもらうログイン。

この機能を実装するにあたり、どのようにModelを設計すればよいかわからなくなってきました。

  • 私の設計

まず私が考えた設計なのですが、

OmniUser(Oauthでのログイン用)、User(メールアドレスでのログイン用)の2つのModelとDBを設計しました。

OmniUserはuidとproviderというカラムを持っており、この2つが一致した場合にログインできるようにします。
Userはemailとpasswordというカラムを持っており、この2つが一致した場合にログインできます。

  • 問題点

この私の考えた設計の問題点なんですが、

例えばブログというModelを作成する際に、ユーザとブログで1対多関係を結ぶのが自然と思われます。
そこで、ブログModelはカラムにuser_idみたいなものを持つべきなのですが、このuser_idとはOmniUserなのかUserなのかわからないため、どちらのテーブルを見に行ったらいいかわかりません。
そのためどうやって、この処理を書くかという問題点です。

他の問題点としては、
ログインはOmniUser、Userどちらか片方のみがログインしているべきであり、両方がログインしている状態があってはいけません。
このあたりの制御をどう書くかという問題です。

どちらの問題も頑張れば書けるのですが、設計の段階でまずい物ではこのあたりの処理がかなり複雑になってしまうのではないかと恐れています。

  • 質問

そこで改めて質問なのですが、この様な場合、どのような設計をすればよいでしょうか?ご意見をお聞かせいただけると幸いです。

現在、Rails3.2とDevise,Omniauthというログイン用のGemをつかって開発をしているのですが、プログラムの設計で悩んでいます。

具体的に何がしたいかというと、
ブログサービスを開発しているのですが、このサービスにはログイン方法を二種類用意しようと考えています。

一つがTwitter,FaceBook等を使ったOauthでのログイン。
もう一つが一般的な、メールアドレスとパスワードを入力してもらうログイン。

この機能を実装するにあたり、どのようにModelを設計すればよいかわからなくなってきました。

- 私の設計

まず私が考えた設計なのですが、

OmniUser(Oauthでのログイン用)、User(メールアドレスでのログイン用)の2つのModelとDBを設計しました。

OmniUserはuidとproviderというカラムを持っており、この2つが一致した場合にログインできるようにします。
Userはemailとpasswordというカラムを持っており、この2つが一致した場合にログインできます。

- 問題点

この私の考えた設計の問題点なんですが、

例えばブログというModelを作成する際に、ユーザとブログで1対多関係を結ぶのが自然と思われます。
そこで、ブログModelはカラムにuser_idみたいなものを持つべきなのですが、このuser_idとはOmniUserなのかUserなのかわからないため、どちらのテーブルを見に行ったらいいかわかりません。
そのためどうやって、この処理を書くかという問題点です。

他の問題点としては、
ログインはOmniUser、Userどちらか片方のみがログインしているべきであり、両方がログインしている状態があってはいけません。
このあたりの制御をどう書くかという問題です。


どちらの問題も頑張れば書けるのですが、設計の段階でまずい物ではこのあたりの処理がかなり複雑になってしまうのではないかと恐れています。

- 質問

そこで改めて質問なのですが、この様な場合、どのような設計をすればよいでしょうか?ご意見をお聞かせいただけると幸いです。

質問を投稿

ソーシャルログインと普通のログインを併用する際の設計

現在、Rails3.2とDevise,Omniauthというログイン用のGemをつかって開発をしているのですが、プログラムの設計で悩んでいます。

具体的に何がしたいかというと、
ブログサービスを開発しているのですが、このサービスにはログイン方法を二種類用意しようと考えています。

一つがTwitter,FaceBook等を使ったOauthでのログイン。
もう一つが一般的な、メールアドレスとパスワードを入力してもらうログイン。

この機能を実装するにあたり、どのようにModelを設計すればよいかわからなくなってきました。

まず私が考えた設計なのですが、

OmniUser(Oauthでのログイン用)、User(メールアドレスでのログイン用)の2つのModelとDBを設計しました。

OmniUserはuidとproviderというカラムを持っており、この2つが一致した場合にログインできるようにします。
Userはemailとpasswordというカラムを持っており、この2つが一致した場合にログインできます。

この私の考えた設計の問題点なんですが、

例えばブログというModelを作成する際に、ユーザとブログで1対多関係を結ぶのが自然と思われます。
そこで、ブログModelはカラムにuser_idみたいなものを持つべきなのですが、このuser_idとはOmniUserなのかUserなのかわからないため、どちらのテーブルを見に行ったらいいかわかりません。
そのためどうやって、この処理を書くかという問題点です。

他の問題点としては、
ログインはOmniUser、Userどちらか片方のみがログインしているべきであり、両方がログインしている状態があってはいけません。
このあたりの制御をどう書くかという問題です。

どちらの問題も頑張れば書けるのですが、設計の段階でまずい物ではこのあたりの処理がかなり複雑になってしまうのではないかと恐れています。

そこで改めて質問なのですが、この様な場合、どのような設計をすればよいでしょうか?ご意見をお聞かせいただけると幸いです。

現在、Rails3.2とDevise,Omniauthというログイン用のGemをつかって開発をしているのですが、プログラムの設計で悩んでいます。

具体的に何がしたいかというと、
ブログサービスを開発しているのですが、このサービスにはログイン方法を二種類用意しようと考えています。

一つがTwitter,FaceBook等を使ったOauthでのログイン。
もう一つが一般的な、メールアドレスとパスワードを入力してもらうログイン。

この機能を実装するにあたり、どのようにModelを設計すればよいかわからなくなってきました。

まず私が考えた設計なのですが、

OmniUser(Oauthでのログイン用)、User(メールアドレスでのログイン用)の2つのModelとDBを設計しました。

OmniUserはuidとproviderというカラムを持っており、この2つが一致した場合にログインできるようにします。
Userはemailとpasswordというカラムを持っており、この2つが一致した場合にログインできます。

この私の考えた設計の問題点なんですが、

例えばブログというModelを作成する際に、ユーザとブログで1対多関係を結ぶのが自然と思われます。
そこで、ブログModelはカラムにuser_idみたいなものを持つべきなのですが、このuser_idとはOmniUserなのかUserなのかわからないため、どちらのテーブルを見に行ったらいいかわかりません。
そのためどうやって、この処理を書くかという問題点です。

他の問題点としては、
ログインはOmniUser、Userどちらか片方のみがログインしているべきであり、両方がログインしている状態があってはいけません。
このあたりの制御をどう書くかという問題です。

どちらの問題も頑張れば書けるのですが、設計の段階でまずい物ではこのあたりの処理がかなり複雑になってしまうのではないかと恐れています。


そこで改めて質問なのですが、この様な場合、どのような設計をすればよいでしょうか?ご意見をお聞かせいただけると幸いです。