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 ....
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
				r = data2
			if r.is_a? String
				r = r.gsub(pattern,"")
			res << r
		return res
	data = data.gsub(pattern,"") if data.is_a? String

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

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

Your email address will not be published. Required fields are marked *