0

次のモデル/関連付けのセットがあります。

ここに画像の説明を入力

これはオブジェクト指向の観点からは理にかなっていますが、たとえば、UI でそれを表す NewsItem と Photo.image。

明らかな改善は、ポリモーフィックを省いてMediaItem作成Videoし、Photoポリモーフィックにすることですが、それらを交換可能に扱い、順序付け、ランク付けして検索する必要があり、ポリモーフィック関連付けにより、これが非常に複雑/扱いにくくなります。また、多くの重複した属性 (現在オンになっているものMediaItem) も含まれます。

この設定に関する私の主な問題は、 aNewsItemが視覚的に表現される状況があることです。そのタイトルとともに、そのカバー画像である画像を表示しNewsItemます。事実上、ギャラリーの最初の写真です。

この状況では、私は効果的にこれを行っています:

news_item.gallery.media_items.cover_photo.image.url(:thumbnail)

これらのアイテムが一度に最大 20 個 (おそらくそれ以上) 画面に表示されることを考えると、データベース クエリを最適化する必要がありますincludes

もちろん、委任の背後にあるアクセスの一部を非表示にするために、大規模な方法を使用できます。たとえば、次のようになります。

news_item.gallery_cover_image

しかし、これでも一連のテーブルを含めようとする厄介なクエリが残っています。

これを構造化するより賢明な方法はありますか?

4

0 に答える 0