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,並且所有這些都可以通過一個「附件」集合來訪問。