इस तरह कुछ के लिए मैं 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 एकल उद्धरणों से बचने के लिए उन्हें दोगुना कर देता है) लेकिन आपको स्वयं VALUES में उपयुक्त कोष्ठक जोड़ने होंगे। कनेक्शन का 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
}
चाल चलनी चाहिए और सुरक्षित रहना चाहिए।