我有一个活动的记录模型,其中有一个名为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
?
谢谢!
答案 0 :(得分:0)
为什么要使用MySerializer类?
相反,你可以简单地使用如下:
serialize :configuration, Hash
现在做,
MyModel.create(configuration: {"key" => 1})
然后尝试
MyModel.first