Обновление отката без каких-либо ошибок - PullRequest
0 голосов
/ 05 октября 2018

В моем приложении я пытаюсь связать план 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_subscription никогда не вызывался.Он даже не печатает эту строку на моей консоли.

Есть идеи о том, что происходит, или как увидеть ошибки на консоли?

1 Ответ

0 голосов
/ 08 октября 2018

Согласно документам, если вы хотите вызвать ошибку RecordInvalid при создании объектов, вам следует использовать create! вместо create.

create! (Attribute = nil, & block) public

Создает объект (или несколько объектов) и сохраняет его в базе данных, если проверки пройдены.Вызывает ошибку RecordInvalid, если проверки не пройдены, в отличие от Base # create.

Ссылка: https://apidock.com/rails/ActiveRecord/Persistence/ClassMethods/create!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...