За нещо подобно бих пренебрегнал нещата за цитиране и екраниране на ActiveRecord и бих отишъл направо към ActiveRecord::Base.connection.quote .
SQL, до който се опитвате да стигнете, е нещо подобно:
INSERT INTO TABLE (column)
SELECT column FROM TABLE
UNION VALUES ('example one''s value'), ('example (2) value')
EXCEPT SELECT column FROM TABLE
Можете да използвате quote за преобразуване на ' към '' (обърнете внимание, че SQL удвоява единичните кавички, за да ги избегне), но ще трябва сами да добавите подходящите скоби в СТОЙНОСТИТЕ. quote на връзката ще добави и външните единични кавички.
Нещо подобно:
values = array_of_strings.map { |s| "(#{ActiveRecord::Base.connection.quote(s)})" }.join(',')
последвано от:
sql = %Q{
INSERT INTO TABLE (column)
SELECT column FROM TABLE
UNION VALUES #{values}
EXCEPT SELECT column FROM TABLE
}
трябва да свърши работа и да е в безопасност.