我有以下一组模型/关联:
虽然这从面向对象的角度来看是有道理的,但它引入了巨大的距离,例如;一个 NewsItem 和在 UI 中表示它的 Photo.image。
一个明显的改进是放弃MediaItem
并制作Video
和Photo
多态,但是我需要互换地对待它们,对它们进行排序、排序以搜索它们,而多态关联使这变得更加复杂/尴尬。它还将涉及许多重复的属性(当前在 上MediaItem
)。
我对这个设置的主要问题是我有NewsItem
视觉表示 a 的情况。除了它的标题,我还展示了一张图片,它是它的封面图片NewsItem
——实际上是画廊中的第一张照片。
在这种情况下,我有效地这样做:
news_item.gallery.media_items.cover_photo.image.url(:thumbnail)
鉴于一次屏幕上最多有 20 个这样的项目(可能更多),我肯定需要确保通过笨拙的includes
.
当然,我可以在很大程度上隐藏委托背后的一些访问权限,例如:
news_item.gallery_cover_image
但这仍然给我留下了试图包含表链的尴尬查询。
有没有更明智的结构方式?