【发布时间】:2012-06-09 18:39:03
【问题描述】:
我有一个表,它与其他表有五种不同的多对多关系。在删除一条记录之前,我需要将其所有子项移动到另一条记录。为此,我使用以下代码:
self.class.reflect_on_all_associations.select {|assoc| assoc.macro == :has_many }.each do |assoc|
target.send(assoc.name) << self.send(assoc.name)
end
基本上,这归结为target.child-association << self.child-association。但这不能正常工作,从“self”中删除所有子项,并将一个子项添加到“target”,除关联字段 null 之外的所有字段。我认为这是因为“target.send(assoc.name) << *self.send(assoc. name) 这样的东西(注意 splat 运算符),但我不知道这样做的有效语法。所以我的问题有两个:
- 如何将任意数组“分解”为“
- 这是使儿童重新分配正常工作所需要的吗?
【问题讨论】:
标签: ruby-on-rails activerecord associations splat