#ruby-on-rails #ruby #postgresql #logging #error-handling
Вопрос:
Итак, я имею дело с ошибкой, которую, я почти уверен, я сузил до ошибки сохранения объекта в определенном рабочем процессе.
Я вставил в код ошибку, чтобы остановить сервер после .save!
того, как это произойдет, в надежде найти какую-нибудь ошибку проверки или что-то в этом роде.
Я действительно нашел ошибку, но она пуста. messages
И details
не храните никакой информации. Есть ли какой-либо способ получить дополнительную информацию об этом событии?
21:22:54 rails.1 | 11: puts "ATTEMPTING TO SAVE"
21:22:54 rails.1 | 12: invoice.save!
21:22:54 rails.1 | 13: puts "SAVED SUCCESFULLY"
21:22:54 rails.1 | 14: byebug
21:22:54 rails.1 | => 15: end
21:22:54 rails.1 | 16: end
21:23:04 rails.1 | (byebug) invoice.errors
21:23:04 rails.1 | #<ActiveModel::Errors:0x00007f47ecaa1640 @base=#<Invoice id: 18,
user_id: 51, invoiceable_type: "SubscriptionCart", invoiceable_id: 137, status:
"scheduled", number: nil, period: nil, external_id: nil, external_status: nil, created_at: "2021-06-16
13:23:56", updated_at: "2021-06-17 00:22:54", due_date: "2021-06-16",
metadata: nil, rejection_code: nil, retry_attempt: nil, next_retry_date: nil,
last_retry_date: nil, expire_date: nil, external_service: "MercadoPago",
external_type: nil, external_info: nil, account_id: 1, temp_due_date: nil,
next_attempt_date: nil,
last_attempt_date: nil, processing_stage: "not_processed", amount_cents: 454400,
amount_currency: "ARS", desist_retrying: false>, @messages={}, @details={}>
Комментарии:
1.
save
здесь это не ваша проблема. Счет успешно сохраняется — в противном случае он выдаст исключение (потому что вы используетеsave!
, а неsave
) и не попадет в ваш byebug. Все объекты AR будут отвечатьerrors
объектом Errors, тот факт, что сообщения пусты, просто говорит о том, что их нет и объект действителен.