Ruby/RubyOnRails-日本語
Rails 一日一つメソッド (Day46) Active Recordコールバック(4) - before_validation, after_validation
아랑팡팡
2024. 3. 5. 14:26
728x90
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