如何改进表格/模型的结构?

时间:2014-11-26 11:26:08

标签: ruby-on-rails database associations rails-activerecord law-of-demeter

我有以下一组模型/关联:

enter image description here

虽然这从面向对象的角度来看是有意义的,但它引入了一个巨大的距离,例如;一个NewsItem和在UI中代表它的Photo.image。

明显的改进是免除MediaItem并使VideoPhoto多态,但我需要互换地对待它们,排序,排名搜索它们,以及多态协会使这变得更加复杂/尴尬。它还涉及许多重复的属性(目前在MediaItem上)。

这个设置的主要问题是我有可视化表示NewsItem的情况。连同它的标题,我显示的图像是NewsItem封面图像 - 实际上是图库中的第一张照片。

在这种情况下,我实际上是这样做的:

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

鉴于屏幕上一次最多有20个这样的项目(可能更多),我肯定需要确保通过includes的笨拙链来优化数据库查询。

当然,我可以在很大程度上隐藏授权后的一些访问权限,例如:

news_item.gallery_cover_image

但是这仍然让我在尝试包含表链时遇到了尴尬的问题。

有更合理的方法来构建这个吗?

0 个答案:

没有答案