Rails принадлежит многим моделям - программирование
Подтвердить что ты не робот

Rails принадлежит многим моделям

Я нашел некоторые вопросы о 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

Это правильный подход?

4b9b3361

Ответ 1

Да, это правильный подход.

Ответ 2

Хотя не всегда "лучший" подход, рельсы предлагают то, что называется полиморфной принадлежностью к ассоциации. Он не позволяет вам определять внешний ключ в базе данных, потому что столбец xxx_id ссылается на идентификатор в одной из многих возможных таблиц, а другой столбец обозначает имя этой таблицы, но делает его более явным в рельсах. Кроме того, он ограничивает модель только принадлежностью к одной из других моделей, в отличие от принадлежности к одному или нескольким, поскольку это произойдет с помощью установки нескольких внешних ключей без дополнительной магии db.