2011-11-19 32 views
1

我有2个不同的(ActiveRecord)模型。我们假设它们被称为CommentActivity。他们有不同的属性和方法。此外,它们都与其他型号相关联,例如Project如何为多个对象执行AR查询

我期待来定义Project模型的方法,所以我可以这样做:

Project.first.stream 

,将返回的有序集合(FE基于底层模型的创建日期)的所有评论以及与此特定项目相关的活动。

我可以分别获取评论和活动,然后在内存中对它们进行排序,但是随着记录数量变得很快,这看起来似乎不是一个好的解决方案。

任何人都可以告诉我如何以一种方式完成这将导致良好的性能和最小的麻烦。

谢谢!

回答

0

只是为了检查,你想要做的相当于:

def stream 
    (comments + activities).sort_by(&:created_at) 
end 

...但在AR?

好问题:-)

评论和活动如何与项目相关联?重构你的关联可能是最简单的,它有一个多态的“附加”模式,这样你就可以拥有一个AttachedComment和一个AttachedActivity,并且所有这些都可以通过一个“附件”集合来访问。