访问数据库中的字符串而不添加转义字符

时间:2019-05-13 09:40:51

标签: ruby-on-rails ruby

我有以下内容:

create_table "events", options: "ENGINE=InnoDB DEFAULT CHARSET=latin1", force: :cascade do |t|
  t.string "meta_data"
end

打开Valentina Studio并查看事件表时,我可以看到一条记录:

ID           meta_data      
1         {"action"=>"bla"} 

当我致电Event.last.meta_data时,我收到以下字符串:

"{\"action\"=>\"bla\"}

如何在没有转义字符的情况下获取此字符串值?我已经尝试了深层转换并只是进行gsubbing,但是这些都没有感觉到我做对了。

预先感谢

2 个答案:

答案 0 :(得分:2)

没有任何转义字符。

您正在查看的是在控制台上检查时字符串的表示形式

请考虑以下内容:

irb(main):001:0> x = '"hello"'
=> "\"hello\""
irb(main):002:0> puts x
"hello"

该字符串不包含任何反斜杠。但是检查时,必须使用反斜杠以区分“字符串结尾”与“字符串内的引号”。

答案 1 :(得分:0)

我能做到的最丑陋的方法是:

JSON.parse(string.gsub("=>", ":").gsub(":nil,", ":null,"))

如果有人不那么丑陋,请告诉我