2016-11-28 2 views
0

Ищу прямой метод для обновления jointable asociationRails прямой метод для обновления объединения таблицы соединений?

Пример: Я есть Project (ID: 45), и некоторые люди работают над этим (Person ид 10 и Person ид 12)

Соединительным является person_projects whites

... 
person_id: 10 project_id: 45 
person_id: 12 project_id: 45 
... 

И в какой-то момент люди уходят, приходят или нет. Пример Личный идентификатор 12 оставить, Идентификатор человека 10 и Идентификатор личности 33.

«Долгий» способ заключался в том, чтобы вставлять в people_projects проверку фактических людей [10, 33] и проверять старых людей [10,12], если не существует. Создавать и удалять в people_projects проверять старых людей у ​​новых людей, если не существует удалить их.

Это займет 2 цикла, но я думаю, что есть рубин короткий метод как

Project.persons.delete_or_create_bla([10 , 33]) 

ответ

1
Project.find(45).person_ids = [10 , 33] 

Это добавит 2 записей в join_table

[45, 10] и [45, 33] и удалить другие записи с project_id = 45 т.е. [45, 12]

Вы также можете нажать эту запись вместо обновления w Ith

Project.find(45).person_ids << 33 

это будет держать [45, 10] и [45, 12], а также добавить [45, 33]

+0

ТНХ '_ids = [...]' метод работы большой. Но с '<<' Я должен знать новую установку? – inye

+0

@inye Проверить обновленное объяснение –

Смежные вопросы