일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- rails7
- springboot
- nico
- 자바
- Spring
- CSS
- DART
- Web
- Python
- 건담
- 一日一つメソッド
- 인프런
- 日本語
- 반다이몰
- Flutter
- C로 시작하는 컴퓨터 프로그래밍4판
- 単語
- 건담베이스
- rails
- 디지몬
- jsp
- 연습문제
- html
- 비즈니스일본어
- メソッド
- javascript
- java
- 일본어
- vscode
- ruby
Archives
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day46) Active Recordコールバック(4) - before_validation, after_validation 본문
Ruby/RubyOnRails-日本語
Rails 一日一つメソッド (Day46) Active Recordコールバック(4) - before_validation, after_validation
아랑팡팡 2024. 3. 5. 14:26728x90
Rails 一日一つメソッド (Day46) Active Recordコールバック(4) - before_validation, after_validation
1. Active Recordコールバック before_validationとは
- before_validationとは、ActiveRecord ModelでDataのValidation検証が行われる前に呼び出され、Dataを処理したり変更するために使う。
2. before_validation例題
コールバックの登録
- コールバックを登録するために、Modelでbefore_validationを使う。
例)入力されたEmailをbefore_validationコールバックで小文字に変換する。
class User < ApplicationRecord
before_validation :nor_email
private
def nor_email
self.email = email.downcase if email.present?
end
end
例)UserがEmailを登録する時、50文字を超えるときは before_validationが実行される。
class User < ApplicationRecord
before_validation :email_length
private
def email_length
if email.present? && email.length > 50
errors.add(email, "Emailは50文字以内で入力してください!"
end
end
end
1. Userが Emailを入力する。
2. before_validationが実行される。
3. email_lengthメソッドが実行されEmailの長さを検証する。
4. Emailの長さが50文字を超えるときは、エラーが発生する。
3. Active Recordコールバック after_validationとは
- 該当するオブジェクトがValidation検証に成功した時に呼び出され、検証されたDatani追加作業を行う。
4. after_validation例題
例)Userが登録された後、Emailを小文字で変換し保存する。
class User < ApplicationRecord
after_validation :downcase_email
private
def downcase_email
self.email = email.downcase if email.present?
end
end
user = User.new(email: 'ARANG@example.com')
user.valid?
puts user.email # arang@example.com
728x90
반응형
LIST
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
Rails 一日一つメソッド (Day48) Active Record(5) - before_save, after_save, around_save (0) | 2024.03.07 |
---|---|
Rails 一日一つメソッド (Day47) Ruby - self (0) | 2024.03.06 |
Rails 一日一つメソッド (Day45) Active Record(3)コールバック (0) | 2024.03.04 |
Rails 一日一つメソッド (Day44) Active Record(2)コールバック (0) | 2024.02.29 |
Rails 一日一つメソッド (Day43) Active Record(1) (0) | 2024.02.28 |