Rails服务对象和错误

时间:2013-10-08 19:17:54

标签: ruby-on-rails error-handling ruby-on-rails-4 stripe-payments

在我的Rails4应用程序中,我在我的应用程序中创建了一个包含StripeCommunicator.rb类的服务文件夹 - 这(顾名思义)负责与Stripe的支付处理服务进行通信。

我想知道如何从此类中捕获错误并将它们返回到控制器,以备在视图中使用。

在我的模型中的旧设置中(在使用服务对象之前)我遇到了这样的错误:

rescue Stripe::CardError => e
  errors.add :base, e.message
  false

但这种方法不再适用,我不确定合适的解决方案???

1 个答案:

答案 0 :(得分:3)

使Service对象的行为与ActiveModel对象相同。如果您只想从ActiveRecord对象获得验证和错误行为,您可以使用ActiveModel :: Validations

class ServiceObject
  include ActiveModel::Validations
end

你可以高兴地做

errors.add :base, e.message

validates_presence_of :first_name, :last_name

有关ActiveModel::Validations

的详情,请参阅此博客