Rails Direct方法更新联接表关联



我正在寻找一种直接的方法来更新可连接的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

中添加2个条目

[45, 10][45, 33],并使用project_id = 45删除其他条目,即[45, 12]

您也可以推开条目,而不是使用

更新
Project.find(45).person_ids << 33

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

最新更新