在 Rails 应用程序中,我想将多个模型组合到一个活动提要中。
例如,我有 Post、Comment、Photo、Status 模型。每一个都属于一个用户、一个机构和一个城市。在用户/机构/城市显示页面上,我想显示按时间顺序排列的最新活动列表。
从阅读和其他关于 SO 的问题来看,似乎有两种思想流派。
- 创建一个多态的 ActivityFeed 模型,例如 User
has_many :posts as: feedable
。然后在相应的显示页面上呈现 ActivityFeed 集合。 - 创建并渲染一个组合数组,例如
@user_feed = @user_photos + @user_comment +..
但我没有看到太多讨论每种方法的利弊。
有没有其他人尝试过类似的事情?在选择方法时我应该考虑或计划哪些问题?每个性能如何(尤其是当数据库变大时)?
我的要求是:
- 显示属于父模型的所有项目。
- 拥有几种不同类型的父模型(用户、机构、城市等)。
- 为活动提要中的每个项目呈现不同的视图部分,具体取决于其类。
感谢任何想法,个人经历或有关此方面的更多信息的指针。我应该寻找第三种选择吗?我对从多个查询创建组合数组的性能特别感兴趣。
谢谢