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

cmw*_*cmw 0 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
Run Code Online (Sandbox Code Playgroud)

然后,我决定使用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
Run Code Online (Sandbox Code Playgroud)

这导致以下结果: uninitialized constant Stripe::Error

我很想得到一些关于如何正确更新记录的帮助/指导.

谢谢!

Cha*_*rd_ 5

首先在gemfile中添加条带

gem 'stripe'
Run Code Online (Sandbox Code Playgroud)

然后做一个 bundle install

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

require "stripe"
Run Code Online (Sandbox Code Playgroud)

现在重启你的服务器.


小智 5

Stripe模块不实现Error类,仅实现StripeError类。请参阅stripe-ruby 文档

如果您将代码更改为

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

它应该有效。