首页 > 解决方案 > 更新回滚而不显示任何错误

问题描述

在我的应用程序中,我试图将 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”方法从未被调用过。它甚至没有在我的控制台上打印这一行。

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

标签: ruby-on-railsruby

解决方案


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

create!(attributes = nil, &block) 公开

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

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


推荐阅读