ActiveRecord::Base.connectionимеет quoteметод, который принимает строковое значение (и, возможно, объект столбца). Итак, вы можете сказать это:
ActiveRecord::Base.connection.execute(<<-EOQ)
UPDATE foo
SET bar = #{ActiveRecord::Base.connection.quote(baz)}
EOQ
Обратите внимание, если вы выполняете миграцию Rails или объект ActiveRecord, вы можете сократить это до:
connection.execute(<<-EOQ)
UPDATE foo
SET bar = #{connection.quote(baz)}
EOQ
ОБНОВЛЕНИЕ: как указывает @kolen, вы должны использовать exec_updateвместо этого. Это обработает цитирование за вас, а также предотвратит утечку памяти. Однако подпись работает немного иначе:
connection.exec_update(<<-EOQ, "SQL", [[nil, baz]])
UPDATE foo
SET bar = $1
EOQ
Здесь последний параметр - это массив кортежей, представляющих параметры привязки. В каждом кортеже первая запись - это тип столбца, а вторая - значение. Вы можете nilуказать тип столбца, и Rails обычно поступает правильно.
Есть также exec_query, exec_insertи exec_delete, в зависимости от того, что вам нужно.