我正在寻找一种直接的方法来更新可连接的Asociation
一个例子是:我有Project
(ID:45),有些人正在研究它(人ID 10和人ID 12)
共同的是Persons_projects whith
...
person_id: 10 project_id: 45
person_id: 12 project_id: 45
...
在某个时候,人们离开,到达和不到。示例人员ID 12休假,人ID 10停留和人ID 33到达。
"漫长的方法"是插入persons_projects检查实际的人[10,33]并检查老人[10,12]如果不存在并删除Persons_projects,请检查新朋友的老人,如果没有存在删除它们。
这是2个循环,但我认为有一种红宝石短的方法,例如
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]