在我的应用中,我试图将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”方法从未调用过。它甚至不在我的控制台上打印此行。
关于正在发生的事情或如何在控制台上看到错误的任何想法?
答案 0 :(得分:0)
根据文档,如果要在创建对象时引发RecordInvalid
错误,则应使用create!
而不是create
。
创建!(属性= nil,并阻止)公共
如果通过验证,则创建一个(或多个)对象并将其保存到数据库。如果验证失败,则会引发RecordInvalid错误,这与Base#create不同。
参考:https://apidock.com/rails/ActiveRecord/Persistence/ClassMethods/create!