Voor zoiets als dit zou ik de ActiveRecord-citaten en escape-dingen negeren en rechtstreeks naar ActiveRecord::Base.connection.quote gaan .
De SQL waarmee je probeert te eindigen is ongeveer als volgt:
INSERT INTO TABLE (column)
SELECT column FROM TABLE
UNION VALUES ('example one''s value'), ('example (2) value')
EXCEPT SELECT column FROM TABLE
U kunt quote . gebruiken om ' . te converteren naar '' (merk op dat SQL enkele aanhalingstekens verdubbelt om eraan te ontsnappen) maar u zult zelf de juiste haakjes in de WAARDEN moeten toevoegen. Het quote van de connectie methode zal ook de buitenste enkele aanhalingstekens toevoegen.
Zoiets als dit:
values = array_of_strings.map { |s| "(#{ActiveRecord::Base.connection.quote(s)})" }.join(',')
gevolgd door:
sql = %Q{
INSERT INTO TABLE (column)
SELECT column FROM TABLE
UNION VALUES #{values}
EXCEPT SELECT column FROM TABLE
}
zou het lukken en veilig zijn.