💾
ActiveRecordのCRUD実行メソッドにおけるコールバックとバリデーションの実行有無
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を返す
参考
- ActiveRecord::Persistence::ClassMethods
- ActiveRecord::FinderMethods
- ActiveRecord::Relation
- Upsertとは
- コールバックについて
Discussion