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
另一方面,如果你有一个类似于 StackOverflow 的标记系统,你将需要一个 HABTM 关系。一个问题可以有多个标签,而一个标签可以有多个问题。作为一个典型的例子,你的帖子有三个标签(ruby-on-rails、habtm、foreign-key-relationship),而 ruby-on-rails 标签目前有 8,546 个问题。