問題一覧に戻る
中級高度なデータベース
問題34: バリデーション応用 - uniquenessとカスタムバリデーション
Railsの高度なバリデーション技術、特にuniqueness制約とカスタムバリデーションメソッドを学習します。これらのバリデーションはモデルレベルでデータの整合性を保証し、重複レコードを防ぎ、単純なpresenceやformatチェックを超えた複雑なビジネスルールを実装します。
class User < ApplicationRecord
# メールの一意性を保証
validates :email, : { : false }
# カスタムバリデーションメソッド
:email_domain_must_be_valid
private
def email_domain_must_be_valid
if email.present? && !email.ends_with?('@example.com')
# バリデーション失敗時にエラーを追加
errors.(:email, 'must be an example.com email')
end
end
end