LoginSignup
10
4

More than 3 years have passed since last update.

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

Posted at

テストデータがほしいときに 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クエリを発行するので新規作成できないという点でここでは除外しました。

参考サイト

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4