作者:晨晖03_753 | 来源:互联网 | 2023-02-04 14:18
我需要比较两个活动记录并获取已更改列的名称
#
#
我需要比较这两个记录并获取已更改列的名称。在这种情况下:comments, :created_at, :updated_at
我尝试使用类似的方法eql?
,record1.attributes.except('id') == record2.attributes.except('id')
这些只返回true或false,我也需要获取列名。可以通过比较每列来完成,但是我正在寻找其他选择。
1> bitsapien..:
您可以使用一种小方法为您完成此操作:
def diff_active_record(record_a, record_b)
(record_a.attributes.to_a - record_b.attributes.to_a).map(&:first)
end
这种方法将需要两个active_record对象(在这种情况下:record_a
,record_b
),以比较和产生属性名称的数组已改变。
您可以这样使用它:
diff_active_record(Evaluation.find(1), Evaluation.find(2))
以上将导致 [:id, :comments, :created_at, :updated_at]