加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:04:33 所属栏目:百科 来源:网络整理
导读:这与 Rails partial updates problem with hashes非常相似,但问题并没有真正得到回答恕我直言. 问题是:我有一个带序列化列的模型: class Import AR::Base serialize :data 在我的情况下,在第一次保存/创建模型后,这些数据将会,而且应该不会更改.所以我想禁
这与 Rails partial updates problem with hashes非常相似,但问题并没有真正得到回答恕我直言.

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

class Import < AR::Base
  serialize :data

在我的情况下,在第一次保存/创建模型后,这些数据将会,而且应该不会更改.所以我想禁用AR的功能,它始终保存序列化列(这通常是一个好主意,因为它无法检测到这些更改).我想禁用保存,因为数据可能非常大,模型将经常更新.

我已经尝试过monkeypatching到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

…即.将数据列移动到自己的模型中,并将其与原始模型相关联.实际上这在概念上有点清洁.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读