这是表结构
create_table :audits, :force => true do |t|
t.column :audited_changes, :text
end
class Audit < ::ActiveRecord::Base
serialize :audited_changes, Hash
end
这是来自 gem Audited gem 的一堆代码,我需要在其中查询存储为序列化哈希的文本字段 audited_changes。
找到了一个参考,我们可以在文本中查询序列化数组搜索序列化数据,使用活动记录,我有没有类似于查询而不是循环大量记录的选项?
这就是我从 audited_changes 中取出我需要的记录的方式
fields = ['name', 'description']
audit_data = audit_data.select do |obj|
obj.define_singleton_method(:audited_changes_filtered) do
obj.audited_changes.select {|k,v| fields.map(&:to_s).include?(k) }
end
obj if fields_present?(obj, fields)
end