У меня есть объект с кучей атрибутов, представляющих атрибуты модели с возможностью поиска, и я хотел бы динамически создавать SQL-запрос, используя только те атрибуты, которые установлены. Я создал метод ниже, но я считаю, что он восприимчив к атакам SQL-инъекций. Я провел некоторое исследование и прочитал руководство по интерфейсу активных запросов рельсов, но похоже, что для условия всегда требуется статически определенная строка в качестве первого параметра. Я также попытался найти способ дезинфекции строки sql, созданной моим методом, но похоже, что есть хороший способ сделать это.rails dynamic, где sql-запрос
Как я могу сделать это лучше? Должен ли я использовать условие where или просто каким-то образом дезинфицировать эту строку sql? Благодарю.
def query_string
to_return = ""
self.instance_values.symbolize_keys.each do |attr_name, attr_value|
if defined?(attr_value) and !attr_value.blank?
to_return << "#{attr_name} LIKE '%#{attr_value}%' and "
end
end
to_return.chomp(" and ")
end
Ничего себе, я поражен твоими навыками Руби. Второй пример - взрывное взрывное устройство. Благодаря! –