일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 건담베이스
- 인프런
- springboot
- Web
- html
- nico
- CSS
- 연습문제
- vscode
- rails7
- 日本語
- javascript
- C로 시작하는 컴퓨터 프로그래밍4판
- Python
- Spring
- ruby
- jsp
- rails
- 반다이몰
- 일본어
- 비즈니스일본어
- 単語
- DART
- java
- 자바
- 디지몬
- 一日一つメソッド
- Flutter
- メソッド
- 건담
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day49) Active Record(6) - after_create, before_create, around_create 본문
Rails 一日一つメソッド (Day49) Active Record(6) - after_create, before_create, around_create
아랑팡팡 2024. 3. 8. 15:19
Rails 一日一つメソッド (Day49) Active Record(6) - after_create, before_create, around_create
1. before_create, after_create, around_create
before_create
- オブジェクトが生成される前に実行されるコールバックで、オブジェクトが生成される前に、初期化を行う時に使われる。
after_create
- オブジェクトが生成された後に実行されるコールバックで、オブジェクトが生成された後、他のModelとに関係を設定したりするのができる。
around_create
- オブジェクトが生成される過程を囲まれているコールバックで、オブジェクトの生成 「前」、「後」 に行う。
2. before_create
class User < ApplicationRecord
before_create :downcase_email
private
def downcase_email
self.email = email.downcase
end
end
before_createコールバックは、downcase_emailメソッドを呼び出して、Userが生成される前に、Emailを小文字で変換できる。これで、Emailの重複を確認できるようになる。
3. after_create
class User < ApplicationRecord
after_create :send_welcome_email
private
def send_welcome_email
UserMailer.with(user: self).welcome_email.deliver_now
end
end
after_createコールバックは、Userが生成された後、自動にwelcome_emailを送るようになる。
4. around_create
class User < ApplicationRecord
around_create :log_creation
private
def log_creation
puts "User Emailが生成される前。"
yield
puts "User Emailが登録されました"
end
end
Userが生成される時、puts "User Emailが生成される前。"を出力し、yieldでオブジェクトを生成する。DataBaseに保存されたらputs "User Emailが登録されました"が出力される。
5. saveとcreateの違い
before_create | オブジェクトが初めて生成されDatabaseに保存される前に呼び出される。 |
after_create | オブジェクトが生成されDatabaseに保存される後に呼び出される。 |
around_create | オブジェクトが生成されData baseに保存される 「前」、「後」に呼び出される。 |
createコールバックは、オブジェクトが生成され、保存されうる時だけ動く。
createコールバックは、オブジェクトが初めて生成される時に、初期化を行い、新しいRecordを生成し、追加作業を行う時に使う。
before_save | オブジェクトがDataBaseに保存される前に呼び出される。 |
after_save | オブジェクトがDataBaseに保存された後に呼び出される。 |
around_save | オブジェクトがDataBaseに保存される 「前」、「後」に呼び出される。 |
saveコールバックは、オブジェクトがDataBaseに保存されるたびに動く。
saveコールバックは、オブジェクトが保存される度に必要な作業を行うため、新しいRecordを生成したり、既存のRecordをUpdateする時に動く。