Edited at

Rails コールバックbafore_save 〜email保存時に小文字に変換〜


概要

初めてのRailアプリ開発で気になるところ、つまずくところをピックアップ


目的

データベースに保存をする際のメールアドレスを小文字に変換したい


どうする


user.rb

class User < ActiveRecord::Base

validate :email, presence: true, length { maximum: 30 },
uniqueness: { case_sensitive: false }
end

#validate :e-mail

userテーブルのemailカラムに指定

#presence: true

#Userにemail属性がない場合は無効

#length { maximum: 30 }

#最大文字数は30文字に制限

#uniqueness: { case_sensitive: false }

#大文字小文字を区別しないように設定


どうやる


user.rb

class User < ActiveRecord::Base

before_save { self.email = email.downcase }
validate :email, presence: true, length { maximum: 30 },
uniqueness: { case_sensitive: false }
end

# before_save { self.email = email.downcase }

#befoer_saveでvalidationsに成功した時にデータベースに保存する前のアクション
#self.email = email.downcase で全て小文字に変換して保存


参考資料

▼Active Recordバリデーション

https://railsguides.jp/active_record_validations.html