update_attributes删除关联

时间:2014-07-23 18:23:36

标签: ruby-on-rails ruby-on-rails-4 associations

我有两个通过has关联的模型,属于多个关联,称之为FooBar

现在说我有一个foo个实例,还有bar1bar2foo已与bar1关联。

当我尝试更新关联并将bar2添加到foo时,我遇到了问题。

foo.update_attributes(bar_ids=>bar2.id)

这将首先删除与bar1的现有关联,然后将关联添加到bar2,以便foo.bars仅返回bar2。我希望更新操作添加第二个关联而不删除第一个。

我觉得这是一个简单的解决方案,但我找不到答案。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

方法bar_ids的行为,用于替换通常所需的元素。如果要添加新元素,可以将其添加到关联中,如下所示:

foo.bars << bar2

或者如果您需要使用方法bar_ids,只需首先获取值并将其添加到数组中,如下所示:

foo.update(bar_ids: foo.bar_ids | [bar2.id])