Я пишу рубиновый камень. Одна из функций этого драгоценного камня состоит в том, чтобы выполнить запрос вставки в базу данных на основе data_rows, предоставленных пользователем. Мне нужно сделать запрос вставки, используя эти строки данных. Теперь эти строки данных могут содержать строку, целое число, даты и т. Д. Поэтому мне нужно преобразовать их в соответствующий формат запроса (например, "строка" в "\" строку \ "",). Мне нужно знать, есть ли какой-нибудь драгоценный камень, который может облегчить мою жизнь?
ПравильноТеперь я пытаюсь преобразовать их в зависимости от их типа. Так что, если это сначала строка, я подумал, что могу сделать как
def formatted_value(val)
(val.is_a? String) ? "\"#{val}\"" : val
end
Так что, если val равен "some text"
, он просто вернет "\"some text\""
, и я могу продолжить и использовать его как
"Insert into table (str) VALUES (#{formatted_value(val)})"
=> "Insert into table (str) VALUES (\"some Text\")"
Который я могу отправить клиенту MySQL. Но у этого опять есть некоторые осложнения. Например, если пользователь отправляет значение val равным "some \"Text\""
, я хочу преобразовать его в значение "\"some \\\"Text\\\" \""
, чтобы запрос стал
"Insert into table (str) VALUES (\"some \\\"Text\\\" \") "
перед отправкой его клиенту mysql. Одна вещь, которую я могуделаю здесь escape-строку, но опять же я не знаю, если она уже экранирована или нет.
Кроме того, это только для строки, мне нужно обрабатывать преобразование даты в строку тоже, как преобразование to_s не делаетсоответствовать формату. Вот почему я хочу знать, есть ли что-нибудь для этого уже доступное.