🙃
新規登録後の遷移先変更、退会、未登録ログイン
割と頻発する&難しくはないけど毎回地味に調べてしまうやつ🐥
[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