gpt4 book ai didi

ruby-on-rails - 即使未更改,也停止 ActiveRecord 保存序列化列

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

这与 Rails partial updates problem with hashes 非常相似,但恕我直言,这个问题还没有真正得到回答。

问题是这样的:我有一个带有序列化列的模型:

class Import < AR::Base
serialize :data

就我而言,在第一次保存/创建模型后,这些数据将并且不应该改变。因此,我想禁用 AR 始终保存序列化列的功能(这通常是一个好主意,因为它无法检测到这些更改)。我想禁用保存,因为数据可能很大,并且模型会频繁更新。

我已经尝试过像这样对 ActiceRecord::AttributeMethods::Dirty 进行猴子修补:

class Import
def update(*)
if partial_updates?
super(changed | (attributes.keys & (self.class.serialized_attributes.keys - ["data"])))
else
super
end
end

但这似乎没有效果。有人有更好的主意吗?

这是在 Rails 3.0.12 下

最佳答案

我最终做了以下事情,尽管这并不是原始问题的真正答案:

class Import < AR::Base
belongs_to :storage

class Storage < AR::Base
serialize :data

...即将数据列移动到其自己的模型中,并将其与原始模型关联。这实际上在概念上更清晰。

关于ruby-on-rails - 即使未更改,也停止 ActiveRecord 保存序列化列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981257/

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