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]
我正在寻找更新可连接关联的直接方法
一个例子是:我有 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
[45, 10]
和 [45, 33]
并删除带有 project_id = 45
的其他条目,即 [45, 12]
您也可以推送条目而不是更新
Project.find(45).person_ids << 33
这将保留 [45, 10]
和 [45, 12]
并添加 [45, 33]