#一意性バリデーションの実装に必要なタスク
- アプリ側に記述(uniqueness: true)
- データベース側に記述(unique: true)
#アプリ側に記述
models/user.rb
validates :email, uniqueness: true
#データベース側に記述
$ rails g migration add_column_to_users
add_column_to_users.rb
def change
add_index :users, :email, unique: true
end
$ rails db:migrate
テーブルのカラムに一意性を持たせるには、インデックスの作成も必要になる。
理由は、全てのデータを検索することで、過去のデータと重複しているか確認できるため。