既存のテーブル(カラム)に一意制約をつけたいです。
色々調べたところ、下記で可能とありました。
アプリケーション側に設定➔モデルに記述(uniquness:true)
user.rb
1class User < ApplicationRecord 2 validates :email, uniqueness: true 3end
他にもmigrationファイルに
unique:trueを追記する方法もあり、アプリの安全性で見れば両方記述した方がいいとあったのですが、
現在すでに利用しているアプリなので、もしかするとすでに同じメールアドレスで追加されてしまっている可能性があります。(モデルにのみ追記方法だと既存重複は無視され新たに作成した時重複してしまったらエラーと思い通りにはなっています。)
この場合だと、migrationファイルに記述は避けておいた方がいいのでしょうか?
また、migrationファイルに追記する場合の方法も教えていただきたいです
(既存で重複している場合はemailのみ空にする等あればいいのですが、、、)
カラム追加の時は新たにマイグレーションファイルを作成すると思うのですが、(unique: true)のみ追加の場合は下記を現在のマイグレーションファイルに追記するのみで可能なのでしょうか?
add_index :users, :email, unique: true
試しに上記追加し、rails db:migrate をしましたが、shema.rbも何も変更がなくできていなさそうです。
resetはしたくないのですが、新たにマイグレーションファイルを作成する形になりますか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/01/26 02:08
2022/01/26 02:23