Доступ к строке в базе данных без добавления escape-символов - PullRequest
0 голосов
/ 13 мая 2019

У меня есть следующее:

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\"}

Как я могу получить это строковое значение без escape-символов? Я пробовал глубокое преобразование и просто gsubbing, но ни один из них не чувствует, что я делаю это правильно ..

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 13 мая 2019

Экранирующих символов не существует.

Вы видите представление строки при проверке на консоли.

Обратите внимание на следующее:

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

Строка не содержит обратной косой черты.Но когда проверяет , обратная косая черта должна присутствовать, чтобы отличить "конец строки" от "кавычки внутри строки".

0 голосов
/ 13 мая 2019

Наименее уродливый способ, которым я могу сделать это:

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

Если у кого-то есть менее уродливый способ, пожалуйста, дайте мне знать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...