Comportamento insolito nell'accesso ai valori post in un rake task

Questo potrebbe derivare da un malinteso su come si interagisce con il database tramite Ruby (ActiveRecord?) rispetto a Rails, ma sto riscontrando un messaggio di errore insolito mentre eseguo un task rake.

Il messaggio di errore viene ripetuto un certo numero di volte con diversi ID post, simile a questo:

Impossibile aggiornare il post (topic_id: , post_id: 46367)

Il messaggio di errore proviene da questa riga nel task rake posts:refresh_emails:

Ciò che è comune a tutti i post che generano questo errore è che il post si trova all’interno di un argomento cancellato. Non è del tutto inaspettato che non si riesca a eseguire un’operazione su di esso, ma ciò che trovo curioso è che, interrogando quell’ID post in Rails, vedo che ha effettivamente un topic_id impostato, che quella riga puts non riesce a ottenere.

[1] pry(main)> Post.where(id: 46367)
=> [#<Post:0x000055e95558ad10
  id: 46367,
  user_id: 3372,
  topic_id: 4225,
  ...
  raw_email:
   "<qualche email raw valida>",
  ...

Ho esaminato un po’ il codice e l’unica spiegazione ovvia che ho trovato per un errore sollevato e per la stampa di quel messaggio è che non sia stato possibile ottenere nemmeno raw_email alla riga 290, il che avrebbe causato il sollevamento di un’eccezione in Email::Receiver durante l’inizializzazione.

Questo deriva dalla mia scarsa familiarità con Ruby e dal fatto di non essere approfondito particolarmente in revise(), anche se potrebbero esserci facilmente altri punti in cui potrebbe essere sollevata un’eccezione per altri motivi.

In ogni caso, sono un po’ confuso sul motivo per cui fallisca su questi post; sembra che questo task rake dovrebbe essere in grado di operare su post che fanno parte di argomenti cancellati, incluso il primo post. Soprattutto considerando che un membro dello staff potrebbe ripristinare un argomento senza sapere che un tale task sia stato eseguito, figuriamoci che non si è applicato a quell’argomento.

Nel mio caso, non ho bisogno di fare nulla con questi argomenti cancellati e so che non verranno ripristinati, quindi non sto cercando una soluzione, volevo solo portarlo all’attenzione di qualcuno. Forse è qualcosa, forse non è nulla.