Rails

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