Olá. Não sei se é possível, e se for, pesquisei muito e não encontrei nada sobre isso, mas gostaria de ordenar todas as respostas de todos os tópicos do meu fórum pela data de criação.
Tenho trabalhado em uma migração de dados de um fórum antigo para um novo fórum Discourse. Para fazer isso, estou recriando os tópicos e respostas via API para que eu possa enviá-los para o Discourse na data em que a resposta foi criada inicialmente. Isso tem funcionado bem, pois quando acesso as respostas criadas no Discourse, posso ver que a data original está lá.
Mas, mesmo que todas as respostas estejam com a data original, elas estão ordenadas pela ordem em que foram criadas na API. Não sei se isso é um bug ou se é intencional, ou se há alguma maneira de ordená-las pela data que defini na chamada POST da API, mas se houver, gostaria de ajuda sobre este tópico. Abraços, pessoal.
As postagens são exibidas na ordem em que são criadas. Portanto, você precisaria ter seu script de API (que você realmente não quer usar) criando-as na ordem correta.
Hmmm, obrigado pela resposta. Eu pensei em usar um script há um tempo, mas como o Discourse tem muitas relações de tabela, decidi usar a API. Mas existe alguma maneira de criar um script que insira dados em uma tabela e o Discourse cuide do resto do relacionamento? Isso pode facilitar as coisas para mim.
Mas quero dizer, a migração via API tem funcionado até agora. Fico me perguntando qual o sentido de poder enviar um atributo created_at no endpoint para criar posts se o Discourse não vai exibi-los ordenados por ele de qualquer forma… Isso não deveria ser uma solicitação de recurso?
Não, porque a maneira de resolver seu problema é usar um dos dezenas de exemplos que linkei como a forma de resolver seu problema. Eu prometo que será muito, muito mais fácil. Eu escrevi vários scripts de importação antes mesmo de aprender ruby.
Mesmo que você quisesse usar a API, você ainda precisa criar as postagens na ordem created_at. Existem maneiras de ordená-las em um plugin v (ou talvez um componente de tema?), mas você realmente não quer fazer isso.
Entendi. Continuarei seguindo minha ideia, só queria saber sobre o atributo created_at na chamada POST ao criar uma postagem - que é, aparentemente, inútil, se as postagens não puderem ser ordenadas por ele. Obrigado de qualquer forma.
Só para você saber, o motivo pelo qual as coisas não são simplesmente ordenadas por data de criação é que o sistema foi projetado para suportar a movimentação de posts de um tópico para outro e, nesse cenário, provou-se menos desejável que os posts se “misturem” se as datas se sobrepuserem.
Aqui está uma discussão anterior sobre isso:
Sobre como abordar melhor uma migração, concordo com o Jay. Você provavelmente ficará melhor seguindo a arte anterior aqui. Embora não seja uma API web, os scripts existentes dependem de uma “API de migração” de nível inferior, com isso em mente.
A API web é em grande parte projetada como uma API para o aplicativo Discourse front-end. Embora tenha sido usada com sucesso para várias integrações, ela é otimizada para seu propósito principal.