我正在尝试将嵌套的Hash保存到我的数据库并检索它,但是在检索时嵌套值会丢失。
我的模型看起来像这样:
class User
serialize :metadata, MetaData
end
MetaData类看起来像这样:
class MetaData < Hash
attr_accessor :availability, :validated
end
我用来存储数据的代码看起来像这样(但实际数据来自HTML表单):
user = User.find(id)
user.metadata.validated = true
user.metadata.availability = {'Sunday' => 'Yes', 'Monday' => 'No', 'Tuesday' => 'Yes'}
user.save
当我查看数据库中的数据时,我看到以下内容:
--- !map:MetaData
availability: !map:ActiveSupport::HashWithIndifferentAccess
Sunday: "Yes"
Monday: "No"
Tuesday: "Yes"
validated: true
当我尝试再次获取对象时出现问题:
user = User.find(id)
user.metadata.validated # <- this is true
user.metadata.availability # <- this is nil
有什么想法吗?我正在使用Rails 3.1和Postgresql作为我的数据存储区。
答案 0 :(得分:1)
如果查看数据库,您会看到“map:ActiveSupport::HashWithIndifferentAccess
”是否可用?
我的方法是将可用性的单个实例与可用天数的哈希集合结构分开。
答案 1 :(得分:0)
你的意思是user.metadata.validated#&lt; - 这是真的吗?
哪些数据库列的元数据和可用性存储为?他们需要成为TEXT