Ответ 1
Если вы должны сделать это таким образом, используйте quote
метод для объекта соединения:
quote (значение, column = nil)
Выводит значение столбца, чтобы предотвратить атаки SQL-инъекций.
Так что-то вроде этого:
my_name = ActiveRecord::Base.connection.quote("John O'Neil")
my_address = ActiveRecord::Base.connection.quote("R'lyeh")
query = "INSERT INTO companies (name,address) VALUES (#{my_name}, #{my_address})"
ActiveRecord::Base.connection.execute(query);
Никогда не пытайтесь обрабатывать свои собственные цитаты. И не пытайтесь использовать двойные кавычки для цитирования строкового литерала SQL, для чего нужны одинарные кавычки; двойные кавычки предназначены для цитирования идентификаторов (таких как имена таблиц и столбцов) в большинстве баз данных, но MySQL использует обратные ссылки для этого.