일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- nico
- 인프런
- 디지몬
- Spring
- java
- 반다이몰
- javascript
- rails7
- 비즈니스일본어
- rails
- Web
- Flutter
- C로 시작하는 컴퓨터 프로그래밍4판
- CSS
- 일본어
- 자바
- 연습문제
- DART
- Python
- ruby
- メソッド
- 건담베이스
- 単語
- jsp
- 日本語
- 건담
- vscode
- 一日一つメソッド
- springboot
- html
Archives
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day45) Active Record(3)コールバック 본문
728x90
Rails 一日一つメソッド (Day45) Active Record(3)コールバック
4. 利用可能なコールバック
4.2) オブジェクトの更新 (Object Update)
before_validation | Objectのvalidation検証が実行される前に呼び出され、Dataの処理や検証のロジックを行う。 |
after_validation | Objectのvalidation検証が実行された後に呼び出され、検証の結果をもとに作業を行う。 |
before_save | Objectが保存される前に呼び出され、保存する前にDataの処理や検証を行う。 |
after_save | Objectが保存された後に呼び出され、保存する前にDataを処理や検証を行う。 |
around_save | Objectの保存「前」「後」に呼び出され、Objectを保存することに使われたトランザクションをラッピングする。 |
before_update | ObjectがUpdateされる前に呼び出される。 |
after_update | ObjectがUpdateされた後に呼び出される。 |
around_update | ObjectのUpdate 「前」、「後」に呼び出され、ObjectをUpdateすることに使われたトランザクションをラッピングする。 |
after_commit | トランザクションがCommitされた後に呼び出される。 |
after_rollback | トランザクションが完了された後、追加作業を行う。 |
4.3) オブジェクトの削除 (Object Destruction)
before_destroy | Objectが削除される前に呼び出される。 |
after_destroy | Objectが削除された後呼び出される。 |
around_destroy | Objectが削除された後に呼び出され、Objectを削除することに使われたトランザクションをラッピングする。 |
5. after_initialize と after_find
after_initalizeコールバック
- Active Recordオブジェクトがインスタンス化されるたびに呼び出される。インスタンス化は、直接 newを実行する他に、DataBaseからRecordが読み込まれる時にも行われる。
class User < ApplicationRecord
after_initialize :set_defaults
private
def set_defaults
self.role ||= 'regular'
end
end
after_initializeコールバックを使い、Userオブジェクトが初期化される時に、role属性を基本値に設定する。
オブジェクトが生成される時に該当のコールバックが実行され roleがない場合、基本設定、値の 'regular'に設定される。
after_findコールバック
- Active Recordがデータベースからコードを1件読み込むたびに呼び出され、after_findと after_initializeが両方で定義されている場合、after_findが先に呼び出される。
class Product < ApplicationRecord
after_find :log_view
private
def log_view
puts 'Product #{id} を探しました!'
end
end
after_findコールバックを使い、Productオブジェクトを探した後、該当するRecordを探したときに logに記録する。
6. コールバックの実行
create | 新しいRecordを生成し、DataBaseに保存する。 |
create! | createと同じだけど、validate検証に失敗したら、例外を発生させる。 |
save | 更新された内容がvalidation検証を通ったらDataBaseに保存する。 |
save! | saveと同じだけど、更新された内容がvalidation検証に失敗したら例外を発生させる。 |
save(validate: false) | validation検証があってもをしない、更新された内容を保存する。 |
save!(validate: false) | save(validate: false)と同じだけど、保存に失敗したら例外を発生させる。 |
update | 該当する Recordの値を UpdateしDataBaseに保存する。 |
update! | updateと同じだけど、Updateに失敗したら例外を発生させる。 |
update_attribute | 該当する属性の値をUpdateしDataBaseに保存する。 |
destroy | 該当する RecordをDataBaseから削除する。 |
destroy! | destroyと同じだけど、削除に失敗したら例外を発生させる。 |
destroy_all | 条件に合う 全てのRecordを削除する。 |
destroy_by | 特定の条件をもとに Recordを削除する。 |
toggle! | boolean値を toggleする。 |
touch | Recordの timestempを更新し、touchする。 |
valid? | 該当Recordの 有効性を確認する。 |
after_findコールバックは以下の finderメソッドを実行すると呼び出される。
all | 該当するModelの全てのRecordを変換する。 |
first | 該当するModelの初めてのRecordを変換する。 |
find | 与えられたIDに該当するModelのRecordを変換する。 |
find_by | 与えられた条件に該当する最初のRecordを変換する。 |
find_by_* | (動的に生成されるRocord)与えられた条件に該当する最初のRecordを変換する。 |
find_by_*! | (動的に生成されるRocord)与えられた条件に該当する最初のRecordを変換する。Recordがない場合、例外を発生させる。 |
find_by_sql | 与えられたSQLに該当する結果を変換する。 |
last | 該当するModelの最後のRecordを変換する。 |
728x90
반응형
LIST
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
Rails 一日一つメソッド (Day47) Ruby - self (0) | 2024.03.06 |
---|---|
Rails 一日一つメソッド (Day46) Active Recordコールバック(4) - before_validation, after_validation (0) | 2024.03.05 |
Rails 一日一つメソッド (Day44) Active Record(2)コールバック (0) | 2024.02.29 |
Rails 一日一つメソッド (Day43) Active Record(1) (0) | 2024.02.28 |
Rails 一日一つメソッド (Day42) Active Storage - has_many_attached (0) | 2024.02.27 |