【问题标题】:Active Record: Parent Model w/ Multiple Child Model TypesActive Record:具有多个子模型类型的父模型
【发布时间】:2014-01-04 04:00:55
【问题描述】:

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

堆栈
Rails 4.1.0.beta1 & Ruby 2.0 & Postgres

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

这是我最初的想法:
内容 - has_many:文章、视频、图形 发布日期:日期时间 文章 - belongs_to: 内容 视频 - belongs_to: 内容 图形 - belongs_to: 内容

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

如果引入新的内容类型,组织这些数据以实现速度和增长的最佳方式是什么?提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord


    【解决方案1】:

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

    如果您以后要添加新的内容类型,我相信它应该像在模型标题中添加正确的 has_many 和 belongs_to 标记一样简单。您的内容模型可以拥有任意数量的 has_many,也就是任意数量的内容类型。

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

    【讨论】:

    • 好吧,只是不确定这是否是最聪明的方法。但还是感谢您的回答。 :)
    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 2016-07-20
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    相关资源
    最近更新 更多