使用一個單獨的模型來存儲Feed條目,你在你的第一個想法建議。你看設計模式被稱爲polymorphic association pattern
假設這種新模式被稱爲飼料,你可以使用列多態性associaiton模式如下:feedable_type和feedable_id(如並列到你的建議列名模型和associated_id)
我必須承認,你的問題是不是多態關聯的簡單理解較大,飼料是現代信息設計的一大創新並帶來許多複雜的功能,包括:
所有這一切都可以根據這些屬性變得更加激烈複雜。如果您必須滿足一些非功能性需求(如擴展和性能),則頭痛將迅速複合。
如果您曾經構建過Facebook應用程序,那麼瞭解他們的提要發佈API的工作原理是非常有啓發性的。
您很快就會注意到,用於存儲Feed的單獨模型在提供HTML條目時相當無用,但加載了裝備精良的原始模型以使數據庫成本很高。爲了解決這個問題,我讓原始模型呈現Feed的HTML,並將其存儲到Feed表中。
當然,實現甚至比這更復雜一點。與Facebook一樣,所有Feed都有1點共同點(它們來自人)。因此,每個供稿條目都有user_id(可以這麼說)。既然我們知道所有提要都有這些數據,並且可以呈現新聞提要的「誰做了」部分,我們不會預先渲染該部分。
預渲染對於預渲染來說非常有幫助,以後很難從feed模型重新構建,但是當我們確定組件無處不在,並且被隱藏到我們的feed模型中時,延遲預渲染。
最後,研究開源項目是學習
燦你給我們提出了4個有問題的模型的例子嗎?以及這些行爲是如何存儲在每個模型中的? – EmFi 2009-10-25 07:48:21