2017-08-16 34 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 

这个实例化类MySerializer与ATTR访问json_hash的一个实例。

现在,这里的问题,我在做:

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

一旦我做MyModel.first,我得到这个:

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

我期待得到的东西,如:

@json_hash = {"key" => 1} 

任何想法为什么我会得到重复密钥json_hash里面的attr访问器@json_hash

谢谢!

回答

0

为什么要使用MySerializer类?

相反,你可以简单地如下使用:

serialize :configuration, Hash 

现在做,

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

并尝试

MyModel.first