Railsアプリで、複数のモデルを1つのアクティビティフィードに結合したいと思います。
たとえば、投稿、コメント、写真、ステータスのモデルがあります。それぞれがユーザー、機関、および都市に属しています。ユーザー/機関/都市のショーページに、最新のアクティビティの時系列リストを表示したいと思います。
SOに関する他の質問を読んだり、他の質問から、これについては2つの考え方があるようです。
- 多形のActivityFeedモデルを作成します。たとえば、User
has_many :posts as: feedable
です。次に、それぞれの表示ページでActivityFeedコレクションをレンダリングします。 - 結合された配列を作成してレンダリングします。
@user_feed = @user_photos + @user_comment +..
しかし、私はそれぞれのアプローチの長所と短所についてあまり議論していません。
他の誰かが同様のことを試みましたか?アプローチを選択する際に、どのような問題について考えたり、計画したりする必要がありますか?それぞれのパフォーマンスはどれくらいですか(特にデータベースが大きくなるにつれて)?
私の要件は次のとおりです。
- 親モデルに属するすべてのアイテムを表示します。
- いくつかの異なるタイプの親モデル(ユーザー、機関、都市など)を持つこと。
- クラスに応じて、アクティビティフィードのアイテムごとに異なるビューを部分的にレンダリングします。
これに関する考え、個人的な経験、またはさらなる情報へのポインタに感謝します。3番目のオプションを探す必要がありますか?私は特に、いくつかのクエリから結合された配列を作成するパフォーマンスに興味があります。
ありがとう