ActiveRecord::Base.connection
quote
bir dize değeri (ve isteğe bağlı olarak sütun nesnesi) alan bir yönteme sahiptir . Yani şunu söyleyebilirsin:
ActiveRecord::Base.connection.execute(<<-EOQ)
UPDATE foo
SET bar = #{ActiveRecord::Base.connection.quote(baz)}
EOQ
Bir Rails geçişi veya ActiveRecord nesnesindeyseniz, bunu şu şekilde kısaltabilirsiniz:
connection.execute(<<-EOQ)
UPDATE foo
SET bar = #{connection.quote(baz)}
EOQ
GÜNCELLEME: @kolen'in belirttiği gibi, exec_update
bunun yerine kullanmalısınız . Bu, sizin için alıntıları halledecek ve ayrıca bellek sızıntısını önleyecektir. İmza biraz daha farklı çalışıyor:
connection.exec_update(<<-EOQ, "SQL", [[nil, baz]])
UPDATE foo
SET bar = $1
EOQ
Burada son parametre, bağlama parametrelerini temsil eden bir tuple dizisidir. Her demette, ilk giriş sütun türüdür ve ikincisi değerdir. nil
Sütun türü için verebilirsiniz ve Rails genellikle doğru olanı yapar.
Orada da exec_query
, exec_insert
ve exec_delete
neye ihtiyacınız bağlı.