[英]Saving a nested hash in Ruby on Rails
我正在尝试将嵌套的哈希保存到我的数据库中并进行检索,但是嵌套值在检索时会丢失。
我的模型如下所示:
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用作我的数据存储。
如果您在数据库中查看,是否会看到“ map:ActiveSupport::HashWithIndifferentAccess
”以了解可用性?
我的方法是从可用天数的哈希收集结构中分离出可用性的单个实例。
您的意思是user.metadata.validated#<-这是真的吗?
元数据和可用性存储为哪些数据库列? 他们必须是TEXT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.