Это может быть связано с непониманием того, как взаимодействовать с базой данных через Ruby (ActiveRecord?) в отличие от Rails, но при выполнении задачи rake я наблюдаю необычное сообщение об ошибке.
Сообщение об ошибке повторяется несколько раз с разными идентификаторами постов, например:
Не удалось обновить пост (topic_id: , post_id: 46367)
Сообщение об ошибке возникает из этой строки в задаче rake posts:refresh_emails:
Общим для всех постов, вызывающих эту ошибку, является то, что они находятся в удалённой теме. Неспособность выполнить какое-то действие с ними не является полностью неожиданным, но меня удивляет то, что при запросе этого идентификатора поста в Rails я вижу, что у него установлен topic_id, который эта строка с puts не может получить.
[1] pry(main)> Post.where(id: 46367)
=> [#<Post:0x000055e95558ad10
id: 46367,
user_id: 3372,
topic_id: 4225,
...
raw_email:
"<some valid raw email>",
...
Я немного просмотрел код и единственное очевидное объяснение, которое я нашёл для возникновения ошибки и вывода этого сообщения, — это если также не удалось получить raw_email на строке 290, что привело бы к выбросу исключения Email::Receiver во время инициализации.
Это связано с моим незнанием Ruby и недостаточным погружением в метод revise(), хотя вполне могут быть и другие места, где могут возникать ошибки по другим причинам.
В любом случае, я немного запутался, почему это происходит именно с этими постами. Похоже, что эта задача rake должна быть способна работать с постами, которые случайно оказались в удалённых темах, включая первый пост. Особенно учитывая, что сотрудник может восстановить тему, не зная даже о существовании такой задачи, не говоря уже о том, что она не применилась к этой конкретной теме.
В моём случае мне не нужно ничего делать с этими удалёнными темами, и я знаю, что они не будут восстановлены, поэтому я не ищу решение, а просто хотел обратить на это чьё-то внимание. Возможно, это что-то, а возможно, ничего.