🙃

新規登録後の遷移先変更、退会、未登録ログイン

2024/06/23に公開

割と頻発する&難しくはないけど毎回地味に調べてしまうやつ🐥

[Registrations]は新規登録
[sessions]はログイン

🕺 {基本はコントローラーに定義していく!!

新規登録のコントローラー
def after_sign_up_path_for(resource)
    customer_path(resource)
end 

引数がわからない!ってなって調べたら(resource)を使うと🧎
ここでいうresourceは『サインアップしたばかりのユーザー』を指すらしい。
devise使うとこうなるらしいので、もう理屈は置いといてこう覚えよーっと!!


view
 <%= link_to "退会する", out_customers_path(current_customer), method: :patch, class:'btn btn-sm btn-danger', data: { confirm: "本当に退会しますか?" } %>
customer controller
def out
 @customer = Customer.find(current_customer.id)
 @customer.update(is_active: false)
 reset_session
 flash[:notice] = "退会処理を実行いたしました"
 redirect_to root_path
end

まずupdateでfalse(退会)にすることで退会扱いにできる。
boolean型は元々2択。デフォルトtrue(有効)

reset_sessionは、Railsのコントローラーで使用されるメソッドで、現在のセッションをリセットし、新しいセッションを開始するために使用されます。
退会処理の際にreset_sessionを使うと、ユーザーのセッションがクリアされ、セッション内のユーザー情報や認証情報が削除されるため、退会後にユーザーが再度ログインしない限り、システムへのアクセスができなくなります。

POINT

これでいけてる気がするけど、今は会員ステータスが退会になっているだけでログインできるから、退会(会員ステータスがfalse)の場合はログインできないように修正する必要がある!!!

sessions controller
def reject_customer
  @customer = Customer.find_by(email: params[:customer][:email])

  if @customer && @customer.valid_password?(params[:customer][:password])
    if @customer.is_active
      sign_in(@customer) # ログイン処理を実行
      redirect_to root_path
    else
      flash[:withdrawal_notice] = "退会済みです。再度ご登録をしてご利用ください。"
      redirect_to new_customer_registration_path
    end
  else
    # 該当するユーザが見つからない場合やパスワードが違う場合の処理
    flash[:login_notice] = "メールアドレスまたはパスワードが正しくありません。"
    redirect_to new_customer_session_path
  end
end

Discussion