ActiveRecord::Base.connectionhat eine quoteMethode, die einen Zeichenfolgenwert (und optional das Spaltenobjekt) annimmt. Sie können also Folgendes sagen:
ActiveRecord::Base.connection.execute(<<-EOQ)
UPDATE foo
SET bar = #{ActiveRecord::Base.connection.quote(baz)}
EOQ
Hinweis: Wenn Sie sich in einer Rails-Migration oder einem ActiveRecord-Objekt befinden, können Sie dies auf Folgendes verkürzen:
connection.execute(<<-EOQ)
UPDATE foo
SET bar = #{connection.quote(baz)}
EOQ
UPDATE: Wie @kolen hervorhebt, sollten Sie exec_updatestattdessen verwenden. Dadurch wird das Angebot für Sie erledigt und es wird auch ein Speicherverlust vermieden. Die Signatur funktioniert allerdings etwas anders:
connection.exec_update(<<-EOQ, "SQL", [[nil, baz]])
UPDATE foo
SET bar = $1
EOQ
Hier ist der letzte Parameter ein Array von Tupeln, die Bindungsparameter darstellen. In jedem Tupel ist der erste Eintrag der Spaltentyp und der zweite der Wert. Sie können nilfür den Spaltentyp angeben, und Rails wird normalerweise das Richtige tun.
Es gibt auch exec_query, exec_insertund exec_delete, je nachdem, was Sie brauchen.