2012-04-19 13 views
0

私はRailsを学ぶ旅の途中で、私は最初にoauth領域に進出しています。私はUserモデルを持っており、ユーザーが複数のサービスに接続できるようにする予定です。これはサービスの固定リストになると思います。つまり、今後は新しい認証サービスを追加する予定はありません。Railsアプリケーションでoauthを実装すると、1つのユーザーモデルか2つ(ユーザー+認証)ですか?

したがって、私は2つの処理方法を見ることができます。

  1. はなど、ユーバーユーザーモデルを持っていることだけでなく、ユーザ名を保持し、パスワードも店はなど、twitter_uidをfb_uidし、任意のデータは、これらのサービスから引き出されました。

  2. ユーザーモデルと関連するAuth_Servicesモデルがあります。ユーザー名、パスワードなどがユーザーに表示されます。 Uid、user_id、プロバイダ名、oauthデータなどはAuth_Servicesに入ります。

私は両方のアプローチで利点と欠点を見ることができます。私は両方のアプローチで正規化されたデータベース設計に関する意見を見ることができます。

私の質問ですが、以前にこれを行った人、どのルートを使用したのですか、なぜですか?あなたはどのような問題にぶつかったのですか?私は何を考えているのか、あるいは意思決定をする際に何を考えなければなりませんか?

私が勉強するのを助けてくれてありがとう!

答えて

1

さらにわずかな可能性がある場合は、さらに2つのモデルを使用して認証を追加してください。それはとにかく私の理由だった。

+0

こんにちはwachichomia、提案に感謝します。私は多かれ少なかれこの問題の「良いデータベース設計」の側面を理解することができます。私は実際にはどちらかのアプローチがビジネスロジック、ユーザーフローなどにどのような影響を与えるかについての洞察をしていると思います。私はoauthを試し始めています。この段階ではどのような問題が起こるのかよくわかりません期待する。これまでにここにいた人の助言に感謝します。誰も "それはひどい考え、それはしないでください"と言って戻ってきました。私はそれが良い兆候だと思います。右?もう一度 –

+0

おかげさまで、私はここで問題を抱えているのは、各サービス間のデータの違いです。たとえば、oauthリクエストによって返されたユーザーに関するデータを格納する場合、返されるデータ間に類似点がありますが、違いがある可能性があります。これにより、認証モデルの設計がより複雑になります。たとえば、ユーザーのTwitterのニックネーム、Facebookのタイムゾーンと場所を保存することができます。したがって、各サービスのフィールドごとに別々の列が必要になります。それとも良い方法がありますか? access_token自体をデータフィールドに保存できますか?他の人たちがこれにどのように取り組んできたかを思い出してください。 –

+1

私は別々のユーザーと認証モデルを使いました。私は、構造化されていないデータを格納するための認証モデルにハッシュ・カラムを組み込んで、プロバイダごとに異なる属性を格納できるようにしました。 –