0

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

4

1 に答える 1