Activerecord:具有/多个子模型类型的父模型

时间:2014-01-03 19:24:17

标签: ruby-on-rails ruby postgresql activerecord

我正在尝试了解使用活动记录为rails应用程序建模数据的最佳方法。

堆栈
Rails 4.1.0.beta1& Ruby 2.0& Postgres

这是我的情景。我有3个“内容类型”的文章,视频和图形。我的目标是能够向Active Record询问我发布的所有内容以及数据库中最新的内容。比如给我最后10个内容项,无论什么'类型'以有效的方式显示。

以下是我最初的想法:
内容 - has_many:文章,视频,图形           published_date:日期时间 文章 - belongs_to:内容 视频 - belongs_to:内容 图形 - belongs_to:内容

我猜它是这样的,但我不确定这是否是最有效的方法。所有文章,视频和图形都将从内容模型继承属性。但每篇文章,视频和图形都有自己的属性。

如果引入新的内容类型,组织此数据以提高速度和增长的最佳方法是什么?谢谢你提前。

1 个答案:

答案 0 :(得分:0)

首先遵循您在“这是我最初的想法”中列出的模型关系:

如果您要在路上添加新的内容类型,我相信它应该像在模型标题中添加正确的has_many和belongs_to标记一样简单。您的内容模型可以包含您想要的尽可能多的has_many,也可以包含您想要的内容类型。

要检索最新的10个内容项,您可以在三个内容类型表上进行连接,这三个内容类型表匹配每个表中的10个最新项目的内容ID,然后按相反的时间顺序对其进行排序并获取前10个项目。