0
Deviseを使用してユーザーを管理しています。ストライプを使用して3つのサブスクリプションプランを設定しています。ストライプフィールドが空または無効であるときしかし、それはエラー画面が点滅し、まだ計画のID登録コントローラは、次のようになりますStripeが有効ではないにもかかわらず、Devise登録フォームがまだユーザーを作成していますRUBY
No such token: undefined
ないことを除いて、新規ユーザーを作成します。
class Users::RegistrationsController < Devise::RegistrationsController
before_filter :select_plan, only: :new
def create
super do |resource|
if params[:plan]
resource.plan_id = params[:plan]
if resource.plan_id == 4 || resource.plan_id == 5 || resource.plan_id == 6
resource.save_with_payment
else
resource.save
end
end
end
end
private
def select_plan
unless params[:plan] && (params[:plan] == '4' || params[:plan] == '5' || params[:plan] == '6')
flash[:notice] = "Please select a membership plan to sign up."
redirect_to root_url
end
end
end
以下は、自分のユーザーに使用しているモデルです。
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :plan
attr_accessor :stripe_card_token
def save_with_payment
if valid?
customer = Stripe::Customer.create(description: email, plan: plan_id, card: stripe_card_token)
self.stripe_customer_token = customer.id
save!
else
redirect_to root_url
flash[:Danger] = "There was an error with processing your payment. Please try again."
end
end
end
これらの不一致がすべて変更されていますが、まだ問題が発生しています。問題は、ストライプフィールドが間違っていてもresource.save_with_paymentに行き、ストライプトークンを生成できないためにエラーメッセージが表示されることです。 しかし、この後も、ユーザーはまだ保存されます。 –