やや大きな 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
ルートに行って別の名前を付けることはしません。