我正在自学Rails,作为一个测试项目,我正在模拟一个类似堆栈溢出的简单问答应用程序。
在我的简化版本中,我有:
我知道答案属于问题。
在我看来,问答并不是真正的"belong_to“用户,而是"has_one用户”(作者)的问答。但这似乎也不对,因为这样用户就会"belong_to问题“和"belong_to答案”。
HABTM是这三个类别之间的答案吗?
很多人在这种关系上被困住了,不是吗?
发布于 2010-01-13 06:34:30
是这三个类之间的答案吗?
不是的。在这些关系中,你不需要HABTM。
用户和questions?
在这两种情况下,这是一对多的关系:一个用户有许多问题,一个用户有很多答案。
从逻辑的角度来看,请考虑这样一个问题:一个问题永远不能由多个用户编写,而一个答案不能由多个用户编写,本身并不是一个多到多的关系。
在这种情况下,您的类应该设置如下:
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个问题。
发布于 2010-01-13 05:55:25
Belongs_to是一个奇怪的名字。找出你的has_many关系,把belongs_to放在另一边,不要担心它的语义。
https://stackoverflow.com/questions/2054729
复制相似问题