Pro něco takového bych ignoroval ActiveRecord citace a escapování a šel rovnou na ActiveRecord::Base.connection.quote
.
SQL, se kterým se pokoušíte skončit, je něco takového:
INSERT INTO TABLE (column)
SELECT column FROM TABLE
UNION VALUES ('example one''s value'), ('example (2) value')
EXCEPT SELECT column FROM TABLE
Můžete použít quote
převést '
na ''
(všimněte si, že SQL zdvojuje jednoduché uvozovky, aby je uniklo), ale budete muset sami přidat příslušné závorky do VALUES. quote
připojení metoda také přidá vnější jednoduché uvozovky.
Něco takového:
values = array_of_strings.map { |s| "(#{ActiveRecord::Base.connection.quote(s)})" }.join(',')
následuje:
sql = %Q{
INSERT INTO TABLE (column)
SELECT column FROM TABLE
UNION VALUES #{values}
EXCEPT SELECT column FROM TABLE
}
by měl udělat trik a být v bezpečí.