Rails直接更新连接表关联的方法?

时间:2016-11-28 14:03:34

标签: ruby-on-rails associations jointable

我正在寻找更新连接表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到达。

" long"方式是插入到people_projects检查实际人[10,33]并检查老人[10,12]如果不存在则创建并删除people_projects检查新人中的老人,如果不存在则删除它们。

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

这样的红宝石短方法
Project.persons.delete_or_create_bla([10 , 33])

1 个答案:

答案 0 :(得分:1)

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]