This is very similar to Rails partial updates problem with hashes , but the question has not really been answered IMHO.
The problem is this: I have a model with a serialized column:
class Import < AR::Base
serialize :data
In my case, this data will, and should, not change after the first save/creation of the model. So I want to disable the feature of AR that always saves serialized columns (which is normally a good idea, as it can't detect those changes). I want to disable the saving because the data can be quite large, and the model will be updated frequently.
I've already tried monkeypatching into ActiceRecord::AttributeMethods::Dirty like this:
class Import
def update(*)
if partial_updates?
super(changed | (attributes.keys & (self.class.serialized_attributes.keys - ["data"])))
else
super
end
end
but this seems to have no effect. Anybody got a better idea ?
This is under Rails 3.0.12
What I ended up doing, even though it's not really an answer to the original question, is the following:
class Import < AR::Base
belongs_to :storage
class Storage < AR::Base
serialize :data
...i.e. moving the data column into a model of its own, and associate that with the original model. Which is actually conceptually somewhat cleaner.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With