首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HABTM还是多重belongs_to?

HABTM还是多重belongs_to?
EN

Stack Overflow用户
提问于 2010-01-13 05:52:14
回答 2查看 860关注 0票数 7

我正在自学Rails,作为一个测试项目,我正在模拟一个类似堆栈溢出的简单问答应用程序。

在我的简化版本中,我有:

  • 问答
  • users (问答的作者)

我知道答案属于问题。

  • 用户和问题之间的正确关系是什么?
  • 用户和答案之间的正确关系是什么?

在我看来,问答并不是真正的"belong_to“用户,而是"has_one用户”(作者)的问答。但这似乎也不对,因为这样用户就会"belong_to问题“和"belong_to答案”。

HABTM是这三个类别之间的答案吗?

很多人在这种关系上被困住了,不是吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-13 06:34:30

是这三个类之间的答案吗?

不是的。在这些关系中,你不需要HABTM。

用户和questions?

  • What's之间的正确关系是什么?用户和答案之间的正确关系是什么?

在这两种情况下,这是一对多的关系:一个用户有许多问题,一个用户有很多答案。

从逻辑的角度来看,请考虑这样一个问题:一个问题永远不能由多个用户编写,而一个答案不能由多个用户编写,本身并不是一个多到多的关系。

在这种情况下,您的类应该设置如下:

代码语言:javascript
运行
复制
class User < ActiveRecord::Base
  has_many   :questions
  has_many   :answers
end

class Question < ActiveRecord::Base
  belongs_to :user
  has_many   :answers
end

class Answer < ActiveRecord::Base
  belongs_to :user
  belongs_to :question
end

另一方面,如果您有一个类似于StackOverflow的标记系统,那么您将需要一个HABTM关系。一个问题可以有多个标签,而一个标签可以有很多问题。作为一个主要的例子,你的帖子有三个标签(红宝石路轨,habtm,外键关系),而rails标签目前有8,546个问题。

票数 7
EN

Stack Overflow用户

发布于 2010-01-13 05:55:25

Belongs_to是一个奇怪的名字。找出你的has_many关系,把belongs_to放在另一边,不要担心它的语义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2054729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档