我有2个不同的(ActiveRecord)模型。我们假设它们被称为Comment
和Activity
。它们具有完全不同的属性和方法。它们也与其他模型相关联,例如Project
。
我希望在Project
模型中定义一个方法,以便我可以执行以下操作:
Project.first.stream
这将返回与此特定项目相关的所有注释和活动的有序集合(基于底层模型的创建日期)。
我可以单独获取评论和活动,然后在内存中进行排序,但随着记录量的快速增长,这似乎不是一个好的解决方案。
任何人都可以告诉我如何以一种能够带来良好表现和最小麻烦的方式完成这项工作。
谢谢!
答案 0 :(得分:0)
只是为了检查,你想要做相同的:
def stream
(comments + activities).sort_by(&:created_at)
end
...但在AR?
好问题: - )
评论和活动如何与项目相关联?最简单的方法是重构你的关联以获得多态“附加”类型的模式,这样你就可以拥有一个AttachedComment和一个AttachedActivity,并且所有这些都可以通过“附件”集合访问。