这与
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
…即.将数据列移动到自己的模型中,并将其与原始模型相关联.实际上这在概念上有点清洁.
原文地址:https://www.jb51.cc/ruby/265198.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。