一意性のバリデーションを取り消したい
Q&A
Closed
解決したいこと・やりたきこと
一意性のバリデーションを取り消し、
退会者でも最初にサインアップで使用したメールアドレスでログインできるようにしたい。
発生している問題・エラー
モデルからバリデーション記述を削除し、バリデーションの際にカラム追加用に作ったマイグレーションファイルをdownにして手動削除してしまいました。
▼Customerモデルのバリデーションの記述(削除済み)
validates :email, uniqueness: true
→画面上のエラーはでていないものの、退会者がログインしようとすると
「Eメールはすでに存在します」のエラーが表示されます。
また一度退会した人はログインできないように制限をかけております。
sessions_controller.rb
class Public::SessionsController < Devise::SessionsController
before_action :customer_state, only: [:create]
def after_sign_in_path_for(resource)
my_page_path
end
protected
def customer_state
@customer = Customer.find_by(email: params[:customer][:email])
return if !@customer
if @customer.valid_password?(params[:customer][:password]) && @customer.is_deleted
flash[:error] = 'アカウントがみつかりません。'
redirect_to new_customer_registration_path
else
root_path
end
end
end
自分で試したこと
- モデルのバリデーション記述を消す
- バリデーション用に作成したマイグレーションファイルを手動削除
- 解決策探したところ、コマンドにて対象のマイグレーションファイルを削除する方法を見つけましたが、ファイルそのものを削除済みであり対応不可。
https://qiita.com/junara/items/86f7e4e5f1e450c8c28f
上記の状況から打破策がございましたらご教示いただけませんでしょうか?
よろしくお願いいたします!!
0