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

标签 ruby-on-rails activerecord serialization partial updates

这与 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/

相关文章:

ruby-on-rails - 如何强制 Rails 将 Oracle 日期字段视为日期时间?

sql - 使用 codeigniter 和 ajax 检查数据库中是否存在用户名

ruby-on-rails - rubymine 错误 - 无法在任何来源中找到 capybara-webkit-0.9.0

ruby-on-rails - 使用 Rack 中间件的记录器

jquery - 在 Rails 中使用 jquery

ruby-on-rails - 由 find_or_create_by_ 创建的重复记录

c# - 实现 IEnumerable<T> 的自定义集合的 Json.net 序列化

c# - XML 到对象反序列化

Java套接字/序列化,对象不会更新

ruby-on-rails - 查找范围!错误 - 找不到有效的映射...(Rails and Devise 1.2.1)