【问题标题】:Rails direct method to update join table association?Rails直接更新连接表关联的方法?
【发布时间】:2016-11-28 14:03:34
【问题描述】:

我正在寻找一种更新可连接关联的直接方法

一个例子是:我有Project (id: 45) 并且有些人正在处理它(Person id 10 和 Person id 12)

可连接的对象是persons_projects

...
person_id: 10 project_id: 45
person_id: 12 project_id: 45
...

在某些时候,人们离开,到达与否。示例人员 id 12 离开、人员 id 10 停留和人员 id 33 到达。

“长”方法是插入到 people_projects 检查实际人员 [10 , 33] 并检查老人 [10,12] 如果不存在则创建并在 person_projects 中删除检查新人中的老人,如果不存在存在删除它们。

这需要 2 个循环,但我认为有一个 ruby​​ 短方法,如

Project.persons.delete_or_create_bla([10 , 33])

【问题讨论】:

    标签: ruby-on-rails associations jointable


    【解决方案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]

    【讨论】:

    • thx _ids = [ ...] 方法效果很好。但是对于&lt;&lt;,我必须知道新的权限?
    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2013-07-07
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多