2009-11-09 7 views
8

私は、ユーザーが記事を作成してそれらの記事にコメントできるシンプルなサイトを構築することでRailsを学んでいます。ユーザーの最新の記事やコメントを一覧表示するビューがあります。今はユーザーのプロファイルを追加して、ユーザーが場所、年齢、短い伝記などの情報を入力できるようにしたいと考えています。私はこのプロファイルが別のモデル/リソースであるべきかどうか疑問に思っています(私はAuthlogicを使用しているので、私は既にかなり多くのフィールドをユーザモデルに持っています。ユーザーのプロファイルは別のモデルにする必要がありますか?

個別のリソースを使用する場合の賛否両論は何ですか?

+0

も参照してください:http://softwareengineering.stackexchange.com/questions/241089/keep-user-and-user-profile-in-different-tables – Jon

答えて

2

私はそれを別にしておきます。すべてのユーザーがプロファイルに記入したいとは限らないので、空のフィールドがユーザーテーブルにあります。また、ユーザーモデルのロジックを変更せずにプロファイルフィールドを変更できることも意味します。

4
  • 長所:それは各モデルに
  • 短所を簡単になります。一度に2を管理することは

少し難しいです。これは、基本的には、ユーザーとプロファイルがどのようにビッグにダウンしています。ユーザーが5つのフィールドとプロファイル3の場合、ポイントはありません。しかし、ユーザーが12フィールド、プロファイル20の場合、間違いなくあなたはすべきです。

+0

なぜあなたは「間違いなく」分割するべきですか?フィールドの多く? – Aaron

0

既存のユーザーテーブルの幅によって異なります。データベースには通常、リサイクルに含めることができるバイト数に制限があります。私はあなたが近くにいる(またはあなたが通常null値を持つフィールドの多くを持っている場合には)制限を超えて、私はパフォーマンスを向上させ、レコードの可能性を少なくするために1対1の関係を持つテーブルを追加します行サイズのデータ​​が多すぎるため、突然挿入できません。あなたが限界近くにいなければ、存在するテーブルに追加してください。

4

私はあなたが別のモデルに入れるのが最も良いと思います。モデルがデータベーステーブルにどのように対応しているのか、そしてアプリケーションがサポートしているさまざまなユースケースについてモデルをどのように読んでいるかを考えてみましょう。

ユーザーが実際のプロファイルにしばらくの間しかいないが、ユーザーモデルに頻繁にアクセスする場合は、必ず1対1の関係で別のオブジェクトにする必要があります。ユーザーデータが必要なたびにプロファイルデータが必要な場合は、が同じテーブルに貼り付けられる可能性があります。

ユーザーを表示するたびに場所が必要になるかもしれません(残したコメントなど)が、伝記は別のモデルにする必要がありますか?適切な内訳を把握する必要がありますが、一般的なルールは、すぐに使用されていないデータをプルする必要がないように物を構成することです。

4

明快さと簡潔さのために、ユーザーモデルにプロファイル列を保存することをおすすめします。特定のフィールドのみを使用している場合は、使用する列を選択します。選択します。

後で何らかの理由で別のテーブルが必要であると判明した場合(たとえば、1人のユーザーが複数のプロファイルを持つことがあります)、それらを分割する作業が多くありません。

私は2つのテーブルを持っている間違いをしました。

+0

私はまったく同じ経験をしています。 – Aaron

3

ユーザーはコメントなど、サイト上のさまざまなリソースを「所有」しています。プロファイルをユーザーから分離すると、リソースはもう1つだけです。ユーザーは静的ですが、プロファイルは時々変化します。

プロファイルの履歴を簡単に管理することもできます。

関連する問題