通过<<分配时覆盖外键在一个有很多关系的运营商

时间:2013-07-18 04:44:04

标签: ruby-on-rails activerecord

以下是我的情况:

class Foo
  has_many :bars
end

class Bar
  belongs_to :foo
end

foo1 = Foo.create
foo2 = Foo.create

bar1 = foo1.bars.create
bar2 = foo1.bars.create

如您所见,两个条都属于foo1,因此它们的foo_id为1。现在:

foo2 << bar2

我希望将bar2的foo_id设置为2。但似乎foo_id已经设置好(因为在这种情况下它已经属于foo1),它不会覆盖它。我不想首先将bar2的foo分配给nil的原因是我不一定从该角度知道关联的名称。实际代码如下所示:

foo2.bars << bar2

我无法轻松执行字符串解析,因为模型类型可能与外键不对应。它也受到多态关联或STI模型的干扰。这就是为什么我更喜欢上述“只是工作”而不必到达

bar2.foo = nil

仅仅因为我的父模型是Foo类。要清楚,让我们说Foo&lt; FooBar的。现在即使我做了类似的事情:

foo2.class.name.foreign_key当实际外键为“foo_bar_id”时,这将评估为“foo_id”。

使用<<运算符时,有没有办法强制覆盖外键?

0 个答案:

没有答案