gpt4 book ai didi

ruby-on-rails-4 - 为添加该字段之前创建的行填充 object_changes 字段

转载 作者:行者123 更新时间:2023-12-05 06:43:23 26 4
gpt4 key购买 nike

在生产中使用 paper_trail 一段时间后,我实现了 object_changes。有没有办法为在添加此字段之前创建的对象填充 object_changes 字段?我想应该有。

paper_trail

最佳答案

这应该可以完成工作。您可以通过排除 papertrail 排除的属性(如时间戳等)来进一步优化这一点。

class AddChangesetsToVersions < ActiveRecord::Migration[5.0]
def change
add_column :versions, :object_changes, :jsonb
reversible do |dir|
dir.up do
PaperTrail::Version.find_each do |version|
old_attr = version.object || {}
new_attr = version.next&.object || version.item&.attributes_before_type_cast || {}

changed_attrs = (old_attr.keys | new_attr.keys).delete_if { |attr|
old_attr[attr] == new_attr[attr]
}
changes = changed_attrs.map {|attr|
[
attr,
[
old_attr[attr],
new_attr[attr]
]
]
}.to_h
version.update_column :object_changes, changes
end
end
end
end
end

关于ruby-on-rails-4 - 为添加该字段之前创建的行填充 object_changes 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33656114/

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