在Rails中,如何合并两个对象?

时间:2017-03-16 16:10:18

标签: ruby-on-rails merge model ruby-on-rails-5

我正在运行Rails 5.假设我有两个对象(相同类型)。如何合并这些对象,如果一个包含空字段而另一个包含空字段,则合并对象将具有非空值?如果两个对象都具有属性的非零值,则可以选择任意一个。也就是说,让我们说对象是

Object A
    attrA : nil
    attrB : ABCD
    attrC : nil
    attrD : EEE

Object B
    attrA : 1234
    attrB : nil
    attrC : 999
    attrD : FFF

如何编写合并对象的内容,以便合并对象为

Object C
    attrA : 1234
    attrB : ABCD
    attrC : 999
    attrD : EEE

1 个答案:

答案 0 :(得分:0)

这样的事情:

Object.new(@objectA.attributes.merge(@objectB.attributes) {|_, one, two| one || two})

PS。我建议从模型中删除id字段。

相关问题