2012-03-20 42 views
1

我有Projelements,它們是這樣的:如何在Ruby on Rails中計算和使用最新更新的對象?

  • Milestone
  • Task
  • ...等...

每個Projelement可以有一個或多個嵌入式Comments(感謝Mongoid )。

我希望能夠輕鬆地說:

給我的Projelements名單通過時,他們最後更新

last_updatedProjelement是較大分類:

  • this_projelement.updated_at
  • if this_projelement.comments.count > 0 then this_projelement.comments.last.updated_at

我可以用上面的邏輯創建一個Projelement類方法last_updated_at

但我真的想和做我Projelements的查詢結束後,使用上述邏輯,以同樣的方式,你會使用屬性做一個查詢檢索最新更新Projelement

以前,我試圖用一個屬性唯一的方法:

使用updated_at屬性的嘗試:如果您更新Projelement的屬性此時間戳更新,但如果你更新嵌入Comments不會被更新。因此,只要添加了Comment,我就可以手動更新this_projelement.updated_at。但設計感覺脆弱。

還想過擁有一個單獨的屬性(例如last_updated_at),以便updated_at的現有語義不會混淆。但設計也感覺脆弱。

什麼是Rails的方式?

回答

2

隨着MongoDB中,不存在溶液一些嵌入的文檔字段訂購。

在你的情況下,解決方案做您的評論回調before_save並更新父文檔的屬性似乎是最reasonnable TECHNIC。

相關問題