jef*_*unt 7 ruby-on-rails foreign-key-relationship has-and-belongs-to-many
我正在自学Rails,作为一个测试项目,我正在嘲笑一个类似于stackoverflow的简单问题/答案应用程序.
在我的简化版本中,我有:
在我看来,问题和答案并不真正"归于"用户,而是问题和答案"has_one user"(作者).但这似乎也不正确,因为那时用户将"属于问题"和"属于回答".
HABTM是三个班级之间的答案吗?
很多人都被这种关系困住了,不是吗?:)
HABTM是三个班级之间的答案吗?
不.您在任何这些关系中都不需要HABTM.
- 用户和问题之间的正确关系是什么?
- 用户和答案之间的正确关系是什么?
在这两种情况下,它都是一对多的关系:用户有很多问题而用户有很多答案.
从逻辑的角度来看,请考虑以下问题:多个用户永远不能创作一个问题,多个用户无法创作一个答案.因此,这不是一个多对多的关系.
在这种情况下,您的类应该像这样设置:
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
Run Code Online (Sandbox Code Playgroud)
另一方面,如果您有一个类似于StackOverflow的标记系统,则需要HABTM关系.一个问题可以有很多标签,而一个标签可以有很多问题.作为一个主要的例子,你的帖子有三个标签(ruby-on-rails,habtm,foreign-key-relationship),而ruby-on-rails标签目前有8,546个问题.
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |