【发布时间】:2015-11-11 17:44:28
【问题描述】:
我有一个简单的模型,它有 3 个属性 id、paylod(二进制数据,大)、created_at。
我需要从负载数据中提取一堆值,以便在after_initialize 回调方法中进行进一步处理。由于有效负载可能非常大(~20MB),我想在提取必要信息后通过设置@payload = nil 来处理这些数据,以防止加载一堆条目时出现内存不足的情况。
注意:模型只从数据库中读取,不需要持久化任何更改。
class Payload < ActiveRecord::Base
after_initialize do |data|
# extract required values from binary data
# ...
# dispose big data
error.payload = nil
# at this point error.changed_attributes['payload']
# contains the previous payload data (~20MB)
end
end
如何防止模型在 @changed_attributes 哈希中保留以前的值?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord jrubyonrails