前提・実現したいこと
deviseを利用し、ウィザード形式での実装中、saveがされない
発生している問題・エラーメッセージ
binding.pry
該当のソースコード
RegistrationsController
1class Users::RegistrationsController < Devise::RegistrationsController 2 # before_action :configure_sign_up_params, only: [:create] 3 4 def new 5 @user = User.new 6 end 7 8 def create 9 @user = User.new(sign_up_params) 10 unless @user.valid? 11 flash.now[:alert] = @user.errors.full_messages 12 render :new and return 13 end 14 session["devise.regist_data"] = {user: @user.attributes} 15 session["devise.regist_data"][:user]["password"] = params[:user][:password] 16 @profile = @user.build_profile 17 render :new_profile 18 end 19 20 def create_profile 21 @user = User.new(session["devise.regist_data"]["user"]) 22 @profile = Profile.new(profile_params) 23 unless @profile.valid? 24 flash.now[:alert] = @profile.errors.full_messages 25 render :new_profile and return 26 end 27 @user.build_profile(@profile.attributes) 28 @user.save 29 binding.pry 30 session["devise.regist_data"]["user"].clear 31 sign_in(:user, @user) 32 end 33 34 protected 35 36 def profile_params 37 params.require(:profile).permit(:zipcode, :prefecture, :city, :block, :phone_number, :profile) 38 end 39end
試したこと
binding.pryでセーブ直前まで入力ができていることは確認できています
session["devise.regist_data"]["user"].clear
で情報が消えてしまっているのでは?
と思い外して実行してみましたが、セーブはされておらず、
profileの”user_id”が入っていないのが怪しいのかな?
と思いますが、他に何か思い当たるところはありませんか?
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/12 02:48