Я преподаю мне направляющие, и как тестовый проект, я копирую простое приложение вопроса/ответа, подобное stackoverflow.
В моей упрощенной версии я имею:
Мне казалось бы, что вопросы и ответы не делают действительно "belong_to" пользователей, и вместо этого вопросов и ответов "has_one пользователь" (автор). Но это не кажется правильным также, потому что затем пользователь был бы "belong_to вопрос" и "belong_to ответ".
Действительно ли HABTM является ответом между этими тремя классами?
Много людей застревает на этой вещи отношений, не так ли?:)
Это может быть «известным» ограничением jQuery; Однако, похоже, это не должно быть хорошо документировано. Я провел около 4 часов сегодня, пытаясь понять, почему мой тайм-аут не работал.
Я перешел на jQuery.jsonp , и он работал понравилось очарование. Спасибо.
-121--776953-это 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, иностранные отношения ключей), в то время как тег Ruby-on-rails в настоящее время имеет 8 546 вопросов.
принадлежит - это странное имя. Выясните ваши отношения HAS_MANY и просто поставить принадлежать к другой стороне и не беспокойтесь о семантике этого.