使用一个单独的模型来存储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