Я установил Stripe on Rails и работает как ожидалось.Установка переменной стоимости в шлюзе оплаты полосы на Rails
У меня есть три модели, относящиеся к заказу. Модель пользователя, модель курса и модель заказа. Они связаны через ассоциацию has_many.
Когда пользователь покупает курс, таблица заказов обновляется с идентификатором пользователя и идентификатором курса.
То, что я не могу понять, это как НЕ ТРЕБОВАТЬ код в запрос Stripe и создать метод. Модель курса имеет : стоимость переменной, и я хотел бы установить стоимость, позвонив @ course.cost. Кажется, я не могу заставить это работать.
Вот мой заказ Модель:
class Order < ActiveRecord::Base
attr_accessible :stripe_card_token, :course_id, :user_id
attr_accessor :stripe_card_token
# attr_accessible :title, :body
belongs_to :course
belongs_to :user
def save_with_payment
@amount = 500
if valid?
charge = Stripe::Charge.create(amount: @amount, currency: 'usd', card: stripe_card_token)
#self.stripe_customer_token = customer.id
save!
end
rescue Stripe::InvalidRequestError => e
logger.error "Stripe error while creating customer: #{e.message}"
errors.add :base, "There was a problem with your credit card."
false
end
end
И мой заказ Контроллер:
class OrdersController < ApplicationController
def new
@order = Order.new
end
def create
@order = Order.new(params[:order])
if @order.save_with_payment
redirect_to @order, :notice => "Thank you for your purchase! Enjoy your Class!"
else
render :new
end
end
end
'self.course.cost'? почему '@'? – Antoine
Когда я использую self.course.cost, я получаю эту ошибку: неправильное количество аргументов (1 для 0). – rickb
извините .... это ошибка, которую я получаю: вызывается id для nil, который ошибочно будет 4 - если вы действительно хотите идентификатор nil, используйте object_id – rickb