gpt4 book ai didi

ruby-on-rails - 脏(更改)属性 : since when are the values in the changeset strings (instead of objects)?

转载 作者:行者123 更新时间:2023-12-03 12:18:41 25 4
gpt4 key购买 nike

我正在使用乐观锁定来防止人们在竞争条件下覆盖彼此的变化。

因为我从 5.1 升级了 Rails至 5.2 ,我的规范坏了,我将其追溯到 changes 中的事实。数组,与文件上传相关的更改不再Uploader元素,但裸字符串。

前:

[1] pry(#<User>)> change
=> [
[0] #<AvatarUploader:0x007fcc7117bc00 # Value before
[1] #<AvatarUploader:17bc0cc7100x997f # Current value

现在:
[1] pry(#<User>)> change
=> [
[0] "image.jpg", # Value before
[1] "avatar.png" # Current value
]

我怎样才能解决这个问题?

最佳答案

我不知道为什么上述行为发生了变化,但我可以解决它。

之前的代码:

@user.changes.map do |attribute, change|
unless ['updated_at', 'lock_version'].include? attribute
StaleInfo.new resource: resource,
attribute: attribute,
value_before: change[0],
value_after: change[1]
end
end

现在代码:

@user.changes.map do |attribute, change|
unless ['updated_at', 'lock_version'].include? attribute
StaleInfo.new resource: resource,
attribute: attribute,
value_before: resource.class.find(resource.id).send(attribute),
value_after: resource.send(attribute)
end
end

不过这种方式感觉很古怪,它需要一个额外的数据库查询(加载原始对象)。

关于ruby-on-rails - 脏(更改)属性 : since when are the values in the changeset strings (instead of objects)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57378870/

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