Kullanıcıları yönetmek için Devise kullanıyorum ve 3 ayrı abonelik planı oluşturmak için Stripe kullanıyorum. Çizgili alanları boş veya geçersiz olduğunda Ancak, bir hata ekranını aydınlatır ve hala Planı kimliği kayıt kontrolör şöyleDevise Kayıt formu, geçerli bir RUBY olmamasına rağmen hala bir kullanıcı oluşturuyor RUBY
No such token: undefined
olmadan haricinde yeni kullanıcı oluşturun.
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
Aşağıdakiler, Kullanıcım için kullanıyorum modeldir.
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
Tüm bu tutarsızlıkları değiştirdim ve hala sorunla karşılaşıyorum. Sorun şu ki, şerit alanları yanlış olsa da, bir şerit belirteci oluşturamıyor ve bu yüzden bana bir hata mesajı veriyorsa, resource.save_with_payment'e gidecektir. Bununla birlikte, bundan sonra bile yine de kullanıcımı kaydeder. –