Como alterar a data do tópico após a importação

Importei todo o meu conteúdo, mas quero que a data do tópico de cada novo tópico seja alterada como se tivesse sido postada a partir da data de hoje, não há posts adicionais por tópico.

É "Alterar carimbo de data/hora" no menu da chave inglesa do tópico:

A caixa de diálogo que aparece explica:

Selecione o novo carimbo de data/hora do tópico. As postagens no tópico serão atualizadas para ter a mesma diferença de tempo.

Para constar, eu estava usando a API e não me lembrei de definir created_at para a data real da postagem.

2 curtidas

Éééé, eu preciso fazer isso para mais de 3.000 posts, no entanto

Parece um trabalho para a API: updateTopicTimestamp.

2 curtidas

Você pode fazer isso no Rails. Acho que pode haver um exemplo em algum lugar se você procurar. Aqui está um começo.

Topic.update_all(created_at: Time.now()

Mas eu faria alguns testes. Por exemplo, você também vai querer atualizar os posts?

3 curtidas

Não há posts, apenas 1 tópico/post de abertura nesse tópico, o comando que você deu funcionaria de imediato?

A caixa de diálogo para alterar o carimbo de data/hora do tópico diz:

Por favor, selecione o novo carimbo de data/hora do tópico. As postagens no tópico serão atualizadas para ter a mesma diferença de tempo.

Se você alterar a data do tópico, ele corrige automaticamente todas as respostas para que fiquem corretas em relação à nova data. Portanto, se um tópico foi originalmente datado em 1º de janeiro e uma resposta em 5 de janeiro, alterar a data do tópico para 2 de janeiro também atualizará a resposta para 6 de janeiro. Fácil!

2 curtidas

Por curiosidade, por que você gostaria que todos os mais de 3.000 tópicos tivessem a mesma data?

Mas, deixando a curiosidade de lado, você deve ser capaz de fazer isso com a API ou com o console do Rails, se você se sentir confortável em usá-lo (é uma boa prática fazer um backup primeiro, apenas por precaução).

Há algumas informações sobre como obter a API relevante para coisas neste tópico - Reverse engineer the Discourse API

E existem alguns exemplos de diferentes técnicas do Rails em Administrative Bulk Operations que você pode usar para construir o que precisa (ou ter uma ideia do que procurar).

1 curtida

Apenas reabrindo este tópico, ainda preciso de suporte adicional, por favor

Tentei isso, não parece fazer nenhuma alteração, mas também não gera erros.

Para seguir a sugestão do Jon, esta é a versão do console Rails.

cd /var/discourse
./launcher enter app
rails c

Em seguida, para um tópico específico:

TopicTimestampChanger.new(topic: Topic.with_deleted.find(TOPIC_ID), timestamp: Time.now()).change!

Para todos os tópicos sem condições:

Topic.find_each do |topic| 
	TopicTimestampChanger.new(topic: topic, timestamp: Time.now()).change!  
end
2 curtidas

Você também pode querer alterar updated_at.

1 curtida