gpt4 book ai didi

ruby-on-rails - Rails 数据库中的继承

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:06 25 4
gpt4 key购买 nike

我正在为我的 Rails 项目规划一个数据库图表。
我有以下实体:Answer(继承自 Post)、Question(也继承自 Post)和 Comment。
评论属于答案或问题。
我将如何继续这样做?

我想过创建一个 Posts 表,同时拥有 Questions 和 Answers 表,每个问题和每个答案都有一个条目。然后我会有一个连接评论和帖子的表格。
我觉得这个解决方案不够干净,不够通用。

最好和最有效的方法是什么?

编辑:
我对 STI(单表继承)解决方案不感兴趣。我们正在寻找一种有效的解决方案,因为这将(希望)成为一个包含许多帖子的大型项目。

最佳答案

默认的 Rails 继承模型是单表继承,是最简单、最干净、最通用且与数据库无关的事情。

只需让 Answer 和 Question 继承自 Post 即可完成。然后创建一个 posts 表,其中包含您在 Post、Answer 和 Question 中所需的所有字段。

单表继承并不是最节省空间的技术,因为 posts 表中的所有行都将包含 所有 Post、Answer 和 Question 字段。但它是传统的,如果你在路上遇到空间问题,你将能够很好地迁移到更具可扩展性的数据模型(如多表继承)。从某种意义上说,单表继承是高效的,因为它只需要一个查询就可以按 ID 查找帖子,而在其他数据模型中,可能需要一个额外的查询来查找帖子所在的表(帖子、问题、答案)。

至于连接 Comments 和 Posts,您可以在 Comment 模型中使用指向 Post 的 belongs_to 关系和在指向 Comment 的 Post 模型中使用 has_many 关系. (您需要在评论表中添加一个 post_id 整数字段才能使其正常工作)。

比照。 http://guides.rubyonrails.org/association_basics.html

您还需要为 post_id 上的评论添加索引,以便快速查询帖子的所有评论:http://guides.rubyonrails.org/migrations.html .

关于ruby-on-rails - Rails 数据库中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7223882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com