Rails 更新加入 table 关联的直接方法?

Rails direct method to update join table association?

我正在寻找更新可连接关联的直接方法

一个例子是:我有 Project (id: 45) 并且有人正在处理它 (Person id 10 和 Person id 12)

可连接的是persons_projects和

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

在某些时候,人们会离开、到达或不到达。示例 Person id 12 离开,Person id 10 留下,Person id 33 到达。

"long" 方法是插入 persons_projects 检查实际人员 [10 , 33] 并检查老年人 [10,12] 如果不存在则创建并在 [=28 中删除=] 勾选新人中的旧人,不存在则删除。

这需要 2 个循环,但我认为有一个像

这样的 ruby 短方法
Project.persons.delete_or_create_bla([10 , 33])
Project.find(45).person_ids = [10 , 33]

这将在 join_table

中添加 2 个条目

[45, 10][45, 33] 并删除带有 project_id = 45 的其他条目,即 [45, 12]

您也可以推送条目而不是更新

Project.find(45).person_ids << 33

这将保留 [45, 10][45, 12] 并添加 [45, 33]