Ruby: удаляем спец. символы перед insert в базу

Метод на ruby по удалению мусора в виде разных скобок, exclamation и других символов, которые гарантированно приведут к ошибке при insert в базу. При необходимости можно добавить символы в переменную pattern.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ....

[code language=”ruby”]
def del_garbage_for_bd(data)
pattern = /!|’|"|\\/
if data.is_a? Array
res = []
data.each do |r|
if r.is_a? Array
data2 = []
r.each do |r2|
r2 = r2.gsub(pattern,"") if r2.is_a? String
data2 << r2
end
r = data2
end
if r.is_a? String
r = r.gsub(pattern,"")
end
res << r
end
return res
end
data = data.gsub(pattern,"") if data.is_a? String
data
end
[/code]

Примеры отработки.

str = "test1!!\""
print del_garbage_for_bd(str)
> test1

num = 4
print del_garbage_for_bd(num)
> 4

arr = [ "test1!!\"", "test5", "test6", "test7", 1, 2 ]
print del_garbage_for_bd(arr)
> ["test1", "test5", "test6", "test7", 1, 2]

arr2 = [ ["test1!!\"", "test5"], ["test5!!\\\""], ["test6"], ["test7"], [1], [2] ]
print del_garbage_for_bd(arr2)
> [["test1", "test5"], ["test5"], ["test6"], ["test7"], [1], [2]]

Leave a Reply