💾

ActiveRecordのCRUD実行メソッドにおけるコールバックとバリデーションの実行有無

2024/05/06に公開

ActiveRecordのCRUD実行メソッドにおけるコールバックとバリデーションの実行有無を比較しました。

Create

create、insert、upsert

  • コールバックとバリデーションの実行有無
    • 実行される
      • create
    • 実行されない
      • insert
      • upsert

Read

find、find_by

  • コールバックとバリデーションの実行有無
    • バリデーションはReadなので存在せず、コールバックは実行される

Update

update、upsert

  • コールバックとバリデーションの実行有無
    • 実行される
      • update
    • 実行されない
      • upsert

Delete

destroy、delete

  • コールバックとバリデーションの実行有無
    • 実行される
      • destroy
    • 実行されない
      • delete

その他

バルク処理

CRUD実行メソッド名の語尾に_allが付くメソッド(update_allなど)

  • コールバックとバリデーションの実行有無
    • 前述のCRUD実行メソッドと同じ

Bangメソッド

CRUD実行メソッド名の語尾に!が付くメソッド(update!など)

  • コールバックとバリデーションの実行有無
    • 前述のCRUD実行メソッドと同じ
  • コールバックやバリデーションが失敗した場合の戻り値
    • 例外を返す
    • !が付かない非Bangメソッドの場合はfalseを返す

参考

Discussion