_nakachan
@_nakachan

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

一意性のバリデーションを取り消したい

解決したいこと・やりたきこと

一意性のバリデーションを取り消し、
退会者でも最初にサインアップで使用したメールアドレスでログインできるようにしたい。

発生している問題・エラー

モデルからバリデーション記述を削除し、バリデーションの際にカラム追加用に作ったマイグレーションファイルをdownにして手動削除してしまいました。

▼Customerモデルのバリデーションの記述(削除済み)

validates :email, uniqueness: true

→画面上のエラーはでていないものの、退会者がログインしようとすると
「Eメールはすでに存在します」のエラーが表示されます。
image.png

また一度退会した人はログインできないように制限をかけております。

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

1Answer

Your answer might help someone💌