繁体   English   中英

在Ruby on Rails中保存嵌套哈希

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM