Rails序列化没有正确转储哈希

时间:2017-08-16 20:08:28

标签: ruby-on-rails ruby serialization

我有一个活动的记录模型,其中有一个名为configuration的文本类型的列。该列使用自定义类进行序列化,如下所示:

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访问者MySerializer实例化类json_hash的实例。

现在,问题就在这里,我正在做:

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

一旦我做MyModel.first,我就明白了:

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

我期待得到类似的东西:

@json_hash = {"key" => 1}

我知道为什么我会在attr访问者json_hash中获得重复的密钥@json_hash

谢谢!

1 个答案:

答案 0 :(得分:0)

为什么要使用MySerializer类?

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

serialize :configuration, Hash

现在做,

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

然后尝试

MyModel.first