Остановить ActiveRecord, сохраняющее сериализованный столбец, даже если он не был изменен

Это очень похоже на Проблема частичного обновления Rails с хэшами, но на вопрос ИМХО ответа нет. .

Проблема в следующем: у меня есть модель с сериализованным столбцом:

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

6
задан Community 23 May 2017 в 11:52
поделиться