ActiveRecordを使わずに、自分で作成したSQL文を使ってDBに問い合わせをする方法です。
name = 'サンプル太郎'
email = 'tarou@example.com'
now = Time.zone.now
args = ['INSERT INTO users (name, email, created_at, updated_at) VALUES (?, ?, ?, ?)', name, email, now, now] #下準備
sql = ActiveRecord::Base.send(:sanitize_sql_array, args) #sql文を作成
ActiveRecord::Base.connection.execute(sql) #sql文を実行
注意点
- 謎の戻り値が返ってくるので、
SELECT
はできません。 - 実行速度やサーバーへの負荷をかなり抑えることができますが、バリデーションや外部キー制約が効かなくなるなど懸念点も多いので注意が必要です。
- いわゆる「Railsのレール」からは外れた実装だと思うので、ActiveRecordではどうにもならない時にだけ使う感じです。