【发布时间】:2014-05-14 15:37:43
【问题描述】:
这看起来非常简单,但我不知道如何将哈希字符串转换为哈希。
当我执行 Answer.find_by_sql 时,我会得到这样的字符串
deepthought = "\"answertolife\"=>\"42\""
但我不知道如何将其转换为哈希。
我试过了:
pry(main)> Hash[deepthought]
ArgumentError: odd number of arguments for Hash
pry(main)> JSON.parse deepthought
JSON::ParserError: 757: unexpected token at '"answertolife"=>"42"'
pry(main)> deepthought.to_json
=> "\"\\\"answertolife\\\"=>\\\"42\\\"\""
我看到了How do I convert a String object into a Hash object?,但还是想不通。
【问题讨论】:
-
你的
find_by_sql是什么样的? -
这是在一个大型 SQL 查询中。简化后类似于
Answer.find_by_sql("SELECT answers.id AS aid, answers.deepthought AS deepthought FROM answers") -
我认为除非您可以升级到本机支持 hstore 数据类型的 Rails4,否则您会遇到不愉快的问题。你可以看看 Rails4 如何在驱动程序中解析 hstore 并模仿它。
标签: ruby-on-rails postgresql ruby-on-rails-3.2 hstore