我在使用Stripe,Rails(3.2.8)和Ruby(1.9.2)时遇到了一个未初始化的常量。
最初,我的销售模型使用了以下内容(这有效!):
def charge_card
begin
save!
charge = Stripe::Charge.create(
amount: self.amount,
currency: "usd",
card: self.stripe_token,
description: self.email,
)
self.finish!
rescue Stripe::Error => e
self.update_attributes(error: e.message)
self.fail!
end
end
然后,我决定使用Stripe的一些附加信息更新该记录,因此我将其更改为以下内容:
def charge_card
begin
save!
charge = Stripe::Charge.create(
amount: self.amount,
currency: "usd",
card: self.stripe_token,
description: self.email,
)
self.update(
stripe_id: charge.id,
card_expiration: Date.new(charge.card.exp_year, Charge.card.exp_month, 1),
fee_amount: charge.fee
)
self.finish!
rescue Stripe::Error => e
self.update_attributes(error: e.message)
self.fail!
end
end
这导致以下结果:uninitialized constant Stripe::Error
我很乐意获得有关如何正确更新记录的帮助/指导。
谢谢!
答案 0 :(得分:5)
首先将条带添加到您的gemfile
gem 'stripe'
然后执行bundle install
然后创建一个文件config/initializers/stripe.rb
并输入以下代码
require "stripe"
现在重启你的服务器。
答案 1 :(得分:3)
Stripe
模块不实现Error
类,只实现StripeError
类。请参阅stripe-ruby documentation
如果您将代码更改为
def charge_card
begin
...
charge = Stripe::Charge.create()
rescue Stripe::StripeError => e
self.update_attributes(error: e.message)
self.fail!
end
end
它应该有用。