gpt4 book ai didi

ruby-on-rails - 比较两条记录并获取 rails 事件记录中更改的列的名称

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:45 25 4
gpt4 key购买 nike

我需要比较两个事件记录并获取更改列的名称

#<Evaluation id: 1, name: "Foo", status: "yes", comments: "can be better", created_at: "2017-05-09 12:00:00", updated_at: "2017-05-09 12:00:00">    
#<Evaluation id: 2, name: "Foo", status: "yes", comments: "keep up the good work", created_at: "2017-05-09 12:05:00", updated_at: "2017-05-09 12:05:00">

我需要比较这两条记录并获取更改的列的名称。在这种情况下 :comments, :created_at, :updated_at

我试过使用类似 eql? 的方法, record1.attributes.except('id') == record2.attributes.except('id')

这些只返回 true 或 false 我还需要获取列名。这可以通过比较每一列来完成,但我正在寻找任何其他选项。

最佳答案

您可以使用一个小方法为您完成此操作:

def diff_active_record(record_a, record_b)
(record_a.attributes.to_a - record_b.attributes.to_a).map(&:first)
end

此方法将采用两个 active_record 对象(在本例中为:record_arecord_b )进行比较并生成一个已更改的属性名称数组。

你可以这样使用它:

diff_active_record(Evaluation.find(1), Evaluation.find(2)) 

以上将导致 [:id, :comments, :created_at, :updated_at]

关于ruby-on-rails - 比较两条记录并获取 rails 事件记录中更改的列的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43864429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com