モデルのテキストフィールドとして多少大きなJSON文字列を保存しますが、モデルのインスタンスが初期化されたときにOpenStruct変数としてデータにアクセスできるようにしたいと考えています。言い換えればRails 4はinit後のActiveRecordモデル変数を上書きします
:私はcrawl = CrawlCache.find(x)
を実行すると
Model: CrawlCache
Field: results, type: text #Storing a JSON String
私は、文字列ではないと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)
を実行すると、はまだ文字列です。
私はorignialを上書きしたいのはメモリ上の理由で、文字列はかなり大きく、メモリ内の文字列と解析されたオブジェクトを持つことは望ましくありません。だからこそ、attr_accessor
ルートには行かず、別の名前を付けています。