在我们的Rails应用程序中,我们有多个记录对应于同一个真实世界的人。假设我们已经明确地识别出两个匹配的记录。我想通过调用old_person.merge(new_person)
将新记录合并到旧记录中,包括所有关联,其中merge
是Person
上的方法。它应该像Hash#merge
一样工作,但是递归地合并关联而不是仅仅覆盖它们。
我可以使用我们当前的架构在Person
模型上手动编写逻辑。但如果可以使用ActiveRecord::Reflection
动态完成遍历关联图,那将更加健壮且面向未来。我甚至可以在#merge
中定义Concern
,并在从include
继承的所有类中ActiveRecord::Base
定义merge
。这样,每个关联都可能以递归方式调用belongs_to
。
在我能想到的几种情况下可能会出现并发症:scope
或设置错误的其他关联方法,关联方法的选项(例如merge
s)等。
所以 -
attach-artifact
方法中?