2017-08-16 8 views
1

アクティブなレコードモデルに、テキストタイプのconfigurationという列があります。その列がそうのように、カスタムクラスでシリアル化さ:Railsのシリアル化でハッシュが正しくダンプされない

class MyModel < ApplicationRecord 
    serialize :configuration, MySerializer 
end 

クラスMySerializerは、以下のクラスのメソッドがあります。

def dump(configuration) 
    configuration.to_json if configuration 
end 

def load(configuration) 
    obj = new 
    obj.json_hash = JSON.parse(configuration) if configuration.present? 
    obj 
end 

これは、attrのアクセサjson_hashとクラスMySerializerのインスタンスをインスタンス化します。

MyModel.create(configuration: {"key" => 1})

をそして、私はMyModel.firstを行うと、私はこれを取得:

は今、ここでの問題はだ、私がやっている

... 
configuration: 
    #<MySerializer:0x00000007faa558 
    @json_hash={"json_hash"=>{"key" => 1} 

私のようなものになっ期待していた:

@json_hash = {"key" => 1} 

繰り返しキーを取得する理由は何ですか。attrアクセサ内の@json_hash

ありがとうございます!

答えて

0

なぜMySerializerクラスを使用しますか?

代わりに、あなたは、単に以下のように使用することができます。今すぐやる

serialize :configuration, Hash 

MyModel.create(configuration: {"key" => 1}) 

を試してみてください

MyModel.first 
関連する問題