【问题标题】:Rails serialization not dumping hash correctlyRails 序列化未正确转储哈希
【发布时间】:2018-01-25 02:31:35
【问题描述】:

我有一个活动记录模型,它有一个名为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 访问器 json_hash 实例化类 MySerializer 的实例。

现在,问题来了,我正在做:

MyModel.create(configuration: {"key" =&gt; 1})

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

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

我期待得到类似的东西:

@json_hash = {"key" => 1}

知道为什么我会在 attr 访问器 @json_hash 中得到重复的键 json_hash 吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby serialization


    【解决方案1】:

    为什么要使用 MySerializer 类?

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

    serialize :configuration, Hash
    

    现在做,

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

    然后试试

    MyModel.first
    

    【讨论】:

      猜你喜欢
      • 2015-08-15
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 2012-01-28
      • 1970-01-01
      • 2014-09-04
      • 2012-10-28
      相关资源
      最近更新 更多