Рельсы принадлежат многим моделям
Я нашел несколько вопросов по SO об ассоциациях Rails, которые в некоторой степени похожи на мой вопрос, но, судя по всему, я не могу понять, как использовать belongs_to
несколько моделей.
Вот структура таблицы, которую я собираюсь иметь:
User
id
Post
id
user_id #foreign key; a post belongs to a User aka "Who created this post"
Comment
id
user_id #foreign key; a comment belongs to a User aka "Who made this comment"
post_id #foreign key; a comment belongs to a Post aka "What post this comment is for"
И ассоциации:
User
has_many :posts
has_many :comments
Post
belongs_to :user
has_many :comments
Comment
belongs_to :user
belongs_to :post
Это правильный подход?
2 ответа
Хотя Rails не всегда является "лучшим" подходом, он предлагает то, что называется полиморфной ассоциацией принадлежат_. Он не позволяет вам определять внешний ключ в базе данных, потому что столбец xxx_id ссылается на идентификатор в одной из многих возможных таблиц, в то время как другой столбец обозначает имя модели этой таблицы, но это делает связь более явной в Rails. Кроме того, он ограничивает модель принадлежностью только к одной из других моделей, в отличие от принадлежности к одной или нескольким, как это может произойти при использовании установки нескольких внешних ключей без некоторой дополнительной магии БД.