我有一个has_many Foo
的ActiveRecord模型类Bar
。我想克隆一个Foo(以获取其大多数属性的副本),然后修改它的Bar实例。
这是一个问题,因为克隆的ActiveRecord实例共享相同的关联数组;改变为一个影响另一个。
f1 = Foo.new
b = Bar.new
f1.bars << b
f2 = f1.clone
f2.bars.includes? b # true
f1.bars.clear
f2.bars.includes? b # now false
真正的问题是我无法从Foo中分离条形数组:
f1.bars << b
f2.bars.includes? b # true
f2.bars = []
f2.bars.includes? b # now false
f1.bars.includes? b # now also false
如果我能做到这一点,那么我可以按照自己的意愿更换吧台。但是,对一个Foo的任何改变似乎都会影响另一个。
注意:我正在使用Rails 3 Beta 2;这可能是一个因素。
这看起来可能是Rails 3特定的错误; I've created a bug report here
答案 0 :(得分:2)
u = User.first
u.tickets.size # 12
u2 = u.clone
u2.tickets = u.tickets
u2.tickets.pop
u2.tickets.size # 11
u.tickets.size # 12
所以,你和u2现在有不同的门票数组