我在模型中将较大的 JSON 字符串存储为文本字段,但希望在初始化模型实例时将数据作为 OpenStruct 变量进行访问。
换句话说:
Model: CrawlCache
Field: results, type: text #Storing a JSON String
当我跑步时,crawl = CrawlCache.find(x)
我希望 crawl.results 不是字符串,而是结果JSON.parse(crawl.result, object_class: OpenStruct)
到目前为止,我的代码是这样的:
after_initialize :set_results
def set_results
self.results = JSON.parse(self.results, object_class: OpenStruct)
end
但是,当我运行上述crawl = CrawlCache.find(x)
,crawl.results.class
仍然是一个字符串。
我想覆盖原始文件的原因是出于内存原因,字符串相当大,我不希望将字符串和解析的对象放在内存中。这就是为什么我不走这attr_accessor
条路线并将其命名为别的。