Rails(ActiveRecord)にて生SQLでDELETE(プレースホルダ付き)する

背景

諸事情により、生SQLでDELETE文を発行したかった。プレースホルダも使用したい。

環境

本題

ActiveRecordに要件を満たすAPIはなさそうなので、ActiveRecord::ConnectionAdapters::AbstractAdapter#raw_connectionからDBアダプタを直接叩いた。 以下、MySQLの例。

ActiveRecord::Base.connection.raw_connection.prepare("DELETE FROM samples WHERE id = ?").execute(1)

備考

SELECTでプレースホルダ付き生SQLを発行したい場合、ActiveRecord::Base#find_by_sqlが良さそう。