我有以下一组模型/关联:
虽然这从面向对象的角度来看是有意义的,但它引入了一个巨大的距离,例如;一个NewsItem和在UI中代表它的Photo.image。
明显的改进是免除MediaItem
并使Video
和Photo
多态,但我需要互换地对待它们,排序,排名搜索它们,以及多态协会使这变得更加复杂/尴尬。它还涉及许多重复的属性(目前在MediaItem
上)。
这个设置的主要问题是我有可视化表示NewsItem
的情况。连同它的标题,我显示的图像是NewsItem
的封面图像 - 实际上是图库中的第一张照片。
在这种情况下,我实际上是这样做的:
news_item.gallery.media_items.cover_photo.image.url(:thumbnail)
鉴于屏幕上一次最多有20个这样的项目(可能更多),我肯定需要确保通过includes
的笨拙链来优化数据库查询。
当然,我可以在很大程度上隐藏授权后的一些访问权限,例如:
news_item.gallery_cover_image
但是这仍然让我在尝试包含表链时遇到了尴尬的问题。
有更合理的方法来构建这个吗?