更新回滚,不显示任何错误

时间:2018-10-05 15:19:15

标签: ruby-on-rails ruby

在我的应用中,我试图将Stripe计划与用户相关联。我已经实现了所有需要的配置和服务。

但是,当我尝试运行一个方法时,我的事务回滚了,并且服务器控制台上没有任何内容让我了解正在发生的事情。

这是我的课程:

private def create_client_subscription
  puts '****** CreateSubscriptionService:: START METHOD create_client_subscription'
  puts "****** CreateSubscriptionService:: #{token}"
    client.create_subscription!(
      customer: payment_gateway_customer,
      plan: payment_gateway_plan,
      token: 'test')
  puts '****** CreateSubscriptionService:: END METHOD create_client_subscription'
  end 

我的客户:

  def create_subscription!(customer: , plan: , source: )
    puts '****** STRIPE_CLIENT:: START CREATE SUBSCRIPTION'
    handle_client_error do
      customer.subscriptions.create(
        source: source,
        plan: plan.id
      )
    puts '****** STRIPE_CLIENT:: END CREATE SUBSCRIPTION'
    end
  end

这里最奇怪的是,我可以在服务器上看到以下内容:

****** CreateSubscriptionService:: START RUN create_client_subscription
****** CreateSubscriptionService:: START METHOD create_client_subscription
****** CreateSubscriptionService:: 
  Talent Load (12.2ms)  SELECT  "talents".* FROM "talents" WHERE "talents"."user_id" = $1 LIMIT $2  [["user_id", 1], ["LIMIT", 1]]
  Client Load (0.6ms)  SELECT  "clients".* FROM "clients" WHERE "clients"."user_id" = $1 LIMIT $2  [["user_id", 1], ["LIMIT", 1]]
  Agency Load (0.6ms)  SELECT  "agencies".* FROM "agencies" WHERE "agencies"."user_id" = $1 LIMIT $2  [["user_id", 1], ["LIMIT", 1]]
  SQL (26.8ms)  UPDATE "users" SET "payment_gateway_customer_identifier" = $1, "updated_at" = $2 WHERE "users"."id" = $3  [["payment_gateway_customer_identifier", "cus_DjNjsFkXZYKMz4"], ["updated_at", "2018-10-05 15:11:23.841589"], ["id", 1]]
   (9.5ms)  ROLLBACK

因此,我的“ create_subscriptions”方法从未调用过。它甚至不在我的控制台上打印此行。

关于正在发生的事情或如何在控制台上看到错误的任何想法?

1 个答案:

答案 0 :(得分:0)

根据文档,如果要在创建对象时引发RecordInvalid错误,则应使用create!而不是create

  

创建!(属性= nil,并阻止)公共

     

如果通过验证,则创建一个(或多个)对象并将其保存到数据库。如果验证失败,则会引发RecordInvalid错误,这与Base#create不同。

参考:https://apidock.com/rails/ActiveRecord/Persistence/ClassMethods/create