如何将2-d哈希作为hstore列的输出?

时间:2013-02-16 10:20:31

标签: ruby-on-rails ruby postgresql hash hstore

在rails应用程序中,我尝试在postgreSql hstore列中存储2-d哈希,但是对于输出我得到类似

的内容
  

{“6/5”=>“{\”color \“=> \”white \“}”,“8/1”=>“{\”color \“=> \” white \“}”,“8/2”=>“{\”color \“=> \”white \“}”,“8/3”=>“{\”color \“=> \“白色\”}”}。

如何将二维哈希作为输出,或者您可以提供一些如何解析它的建议?

2 个答案:

答案 0 :(得分:4)

如果您需要将此转换为哈希,请执行以下操作:

str = {"6/5"=>"{\"color\"=>\"white\"}", "8/1"=>"{\"color\"=>\"white\"}", "8/2"=>"{\"color\"=>\"white\"}", "8/3"=>"{\"color\"=>\"white\"}"}
p str.each_with_object({}){|(k,v),h| h[k] = eval(v)}

结果

  

{“6/5”=> {“color”=>“white”},“8/1”=> {“color”=>“white”},“8/2”= > {“color”=>“white”},“8/3”=> {“color”=>“white”}}

答案 1 :(得分:0)

要在sql数据库中存储哈希,可以使用字符串列并将此行添加到模型中:

serialize :my_hash_thingy

它应该在后台处理每个序列化/反序列化,每次使用时都会正常散列。