ActiveRecordでバリデーションを無視してデータを保存する方法

テストデータがほしいときに rails c してActiveRecordを使ってデータを挿入したいことがよくあるのですが、バリデーションが多く保存できるデータがかなり制限されているようなモデルの場合では、テストデータを作成すること自体結構な工数になってしまいます。

そこで、validationを通さずにsaveする方法がいくつかありそうなので試してみました。

save(validate: false)

 Model.new(name: 'hoge', fuga_column: 'piyo', ... ).save(validate: false)

そんな引数渡せたのか

update_attribute

Model.new.update_attribute(:name, 'test')

カラムが一度に一つしか渡せないのつらい

感想

save(validate: false)がカラムを一度設定できて楽かなあという印象でした。

update_allやupdate_column(s)などはUPDATEクエリを発行するので新規作成できないという点でここでは除外しました。

参考サイト