未初始化的常量Stripe ::错误

时间:2013-11-02 18:08:11

标签: ruby-on-rails ruby-on-rails-3 stripe-payments

我在使用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

我很乐意获得有关如何正确更新记录的帮助/指导。

谢谢!

2 个答案:

答案 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

它应该有用。