Как редактировать дополнительные данные в таблицах HABTM?
-
19-08-2019 - |
Вопрос
Как обновить дополнительные данные в таблицах HABTM.
Например: у меня есть таблицы movies
, people
и HABTM movies_people
, но в таблице persontype_id
есть дополнительное поле <=>, в котором указана роль этого человека в этом конкретном фильме. Как добавить / изменить это значение?
Решение
Возможно, вам следует использовать ассоциацию has_many: through, которая была введена именно по этой причине. Вместо простой таблицы movies_people у вас будет дополнительная модель, называемая чем-то вроде Favorite или Просмотр (в зависимости от того, чего вы пытаетесь достичь с помощью ассоциации), которая принадлежит_ как: movies и: people, так и вашей модели Movie. , вы бы сделали
has_many :favorites
has_many :people, :through => :favorites
Это дает вам доступ к movie.people для всех людей, которые одобрили этот фильм и movie.favor для доступа ко всему, что будет в вашей таблице избранного (например, persontype_id)
Статья Джоша Сусера, Многие ко многим Dance Off гораздо лучше объясняет это, на что я мог надеяться, поэтому для дополнительной помощи я бы посмотрел на это. http://blog.hasmanythrough.com/2006/ 4/20 / многие-ко-многим-дэнс-офф
Другие советы
Существует также отличный Railscast по этому вопросу, Райан Бейтс: