0

現在、Rails アプリをリファクタリングしています。これまでのところ注意が必要な部分は、テーブルpostsです。

私が使用postsしている現在のバージョンでは:

  • 質問
  • 答え
  • コメント

post_type属性の使用。

関係:

  • 質問には多くの回答とコメントがあります。
  • 回答には多くのコメントがあります。
  • 回答は質問に属します。
  • コメントは、回答または質問のいずれかに属します。

これまでのところ、同じテーブルを使用して、質問と回答の投稿タイプを別々のモデルに分割していました: posts. しかし、コメントには次の問題があります。

コメントを除くすべての投稿はコメント可能です。comments投稿テーブルを継承する代わりに、追加のテーブルを作成し、各投稿タイプに「コメント可能」なポリモーフィックな関連付けを作成することをお勧めしますか?

4

1 に答える 1

1

それから私はあなたの質問を読み始めました。私が最初に考えたのは、最初にモデルを分離し(破壊されない、または破壊されにくい変更として)、次に 2 番目のステップで db テーブルを分離することでした。

Commentコメントに関しては、 と にポリモーフィックに関連付けられたモデルが必要だAnswerと思いますQuestion

したがって、最初のステップでは、現在のPostモデルをQuestionAnswer、およびCommentに分割する必要がありますが、posts db テーブルを使用し続けます (したがって、適切な post_type 値を設定するこれらのモデルのそれぞれで default_scope を推測します)

2 番目のステップは、各モデルのデータを個別の db テーブルに移行することです (最初のテストの後、再度テストし、おそらくクラッシュ テストに展開することさえあります)。これにより、アプリの設計がはるかに簡単になり、単一のテーブル内のデータが少なくなります。SQL クエリの数は変わらないため、パフォーマンスに悪影響を与えることさえありません。

于 2013-07-22T18:49:02.093 に答える