Является ли HABTM ответом между тремя классами?
Нет. Вам не нужен HABTM ни в одном из этих отношений.
* +1007 *
Каковы правильные отношения между пользователями и вопросами?
Каковы правильные отношения между пользователями и ответами?
В обоих случаях это отношение один ко многим: у пользователя много вопросов, а у пользователя много ответов.
С логической точки зрения учтите следующее: Один вопрос никогда не может быть создан несколькими пользователями, а один ответ не может быть создан несколькими пользователями. Таким образом, это не отношение многих ко многим. .
В этом случае ваши классы должны быть настроены так:
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 вопросов.