def create
@user = User.create(user_params)
if @user.valid?
charge = StripeWrapper::Charge.create(amount: 999, card: params[:stripeToken], description: "Sign up charge for #{@user.email}" )
if charge.successful?
@user.save
User.inviter_and_invited_follow_each_other(@user)
AppMailer.delay.welcome(current_user)
session[:user_id] = @user.id
flash[:notice] = "You have successfully registered and will be logged in."
redirect_to root_path
else
flash[:notice] = charge.error_message
render :new
end
else
render :new
end
end
ユーザーは充電しても保存します。成功しましたか? false を返します。電子メールが送信されず、session[:user_id] が設定されておらず、root_path にリダイレクトされていないため、他に何も起こりません。Else ブロックが実行されて :new がレンダリングされ、カードが拒否されたことを示すフラッシュ通知が表示されます。
charge.successful の場合、ユーザーの作成を回避しようとしていますか? false を返します。これをどうやって進めるかについて何か考えはありますか?