我正在寻找更新连接表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])
答案 0 :(得分:1)
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]