RoR を学習して約 2 か月になります。
https://monospace-rails.herokuapp.com/を使用してサブスクリプション サイトを設定しようとしており、顧客の住所フィールドをフォームに追加したいと考えています。どういうわけか、私はこれに関する情報を見つけることができません。私はおそらく間違ったキーワードを検索しています。
これはユーザー モデルです。
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation, :stripe_token, :last_4_digits
attr_accessor :password, :stripe_token
before_save :encrypt_password
before_save :update_stripe
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates_presence_of :name
validates_presence_of :email
validates_uniqueness_of :email
validates_presence_of :last_4_digits
def stripe_description
"#{name}: #{email}"
end
def update_stripe
if stripe_id.nil?
if !stripe_token.present?
raise "We're doing something wrong -- this isn't supposed to happen"
end
customer = Stripe::Customer.create(
:email => email,
:description => stripe_description,
:card => stripe_token
)
self.last_4_digits = customer.active_card.last4
response = customer.update_subscription({:plan => "premium"})
else
customer = Stripe::Customer.retrieve(stripe_id)
if stripe_token.present?
customer.card = stripe_token
end
# in case they've changed
customer.email = email
customer.description = stripe_description
customer.save
self.last_4_digits = customer.active_card.last4
end
self.stripe_id = customer.id
self.stripe_token = nil
end
def self.authenticate(email, password)
user = self.find_by_email(email)
if user && BCrypt::Password.new(user.hashed_password) == password
user
else
nil
end
end
def encrypt_password
if password.present?
self.hashed_password = BCrypt::Password.create(password)
end
end
end
私はアドレスフィールドをdb、attr_accessibleに追加し、Stripe:: Customer.create内に何かを追加する必要があると仮定しています。私はそれを書く方法と、それがすべて機能するために必要かどうかについて少し混乱しています。
正しい方向へのヘルプやリンクさえあれば、非常に大きなものになります。