2

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

我很想就如何正确更新记录获得一些帮助/指导。

谢谢!

4

2 回答 2

7

首先将条带添加到您的 gemfile

gem 'stripe'

然后做一个bundle install

然后创建一个文件config/initializers/stripe.rb并输入以下代码

require "stripe"

现在重新启动您的服务器。

于 2013-11-02T18:12:26.500 回答
3

Stripe模块没有实现一个Error类,只有一个StripeError类。请参阅条纹红宝石文档

如果您将代码更改为

def charge_card
  begin
    ...
    charge = Stripe::Charge.create()
  rescue Stripe::StripeError => e
    self.update_attributes(error: e.message)
    self.fail!
  end
end

它应该工作。

于 2015-07-02T16:03:32.600 回答