Come posso ordinare le risposte dell'argomento per data

Ciao. Non so se sia possibile, e se lo fosse ho cercato molto su Google e non ho trovato nulla a riguardo, ma vorrei ordinare tutte le risposte di tutti gli argomenti del mio forum per data di creazione.

Sto lavorando alla migrazione dei dati da un vecchio forum a uno nuovo di Discourse. Per farlo, sto ricreando gli argomenti e le risposte tramite API in modo da poterle inviare a Discourse alla data in cui la risposta è stata creata inizialmente. Questo ha funzionato bene poiché quando vado alle risposte create su Discourse posso vedere che la data originale è presente.

Ma anche se tutte le risposte hanno la data originale, sono ordinate in base all’ordine in cui sono state create nell’API. Non so se questo sia un bug o intenzionale, o se ci sia un modo per ordinarle per la data che ho impostato nella chiamata POST dell’API, ma se così fosse, vorrei un aiuto su questo argomento. Saluti ragazzi.

Sto usando la versione 2.8.8.

Non farlo. Vuoi usare uno script di importazione. Puoi consultare discourse/script/import_scripts at main · discourse/discourse · GitHub per esempi e cercare qui istruzioni per l’esecuzione di script di importazione per altri forum.

I post vengono visualizzati nell’ordine in cui vengono creati. Quindi dovresti avere il tuo script API (che davvero non vuoi usare) che li crei nell’ordine corretto.

1 Mi Piace

Hmmm, grazie per la risposta. Avevo pensato di usare uno script un po’ di tempo fa, ma dato che Discourse ha molte relazioni tra tabelle, ho deciso di passare attraverso l’API. Ma c’è un modo per creare uno script che inserisca dati in una tabella e poi Discourse gestisca il resto della relazione? Questo potrebbe rendermi le cose più facili.

Ma intendo, la migrazione tramite API ha funzionato finora. Mi chiedo quale sia il senso di poter inviare un attributo created_at sull’endpoint per creare post se Discourse non li mostrerà comunque ordinati per esso… Non dovrebbe essere una richiesta di funzionalità?

Sì, infatti c’è! Ho linkato degli esempi.

Se fosse vero, non avresti postato. :wink:

No, perché il modo per risolvere il tuo problema è usare uno dei dozzine di esempi che ho linkato. Ti prometto che sarà molto, molto più facile. Ho scritto diversi script di importazione prima ancora di imparare il ruby.

Anche se volessi usare l’API, dovresti comunque creare i post nell’ordine created_at. Ci sono modi per ordinarli in un plugin (o forse un componente del tema?), ma non vorresti davvero farlo.

@JammyDodger fa notare che c’è un rake task

    rake posts:reorder_posts

Questo potrebbe risolvere il tuo problema. Se stai importando qualche decina di argomenti e qualche centinaio di post, potresti provare.

2 Mi Piace

Capisco. Continuerò a seguire la mia idea, volevo solo sapere riguardo all’attributo created_at nella chiamata POST quando si crea un post, che è, a quanto pare, inutile, se i post non possono essere ordinati per esso. Grazie comunque.

Solo per tua informazione, il motivo per cui le cose non vengono ordinate per data di creazione è che il sistema è progettato per supportare lo spostamento di post da un argomento all’altro e, in tale scenario, si è dimostrato meno desiderabile che i post vengano “mescolati” se le date si sovrappongono.

Ecco una discussione precedente a riguardo:

Sulla questione di come affrontare al meglio una migrazione, sono d’accordo con Jay. Probabilmente è meglio seguire la “precedente arte” in questo caso. Sebbene non sia un’API web, gli script esistenti si basano su una “API di migrazione” di livello inferiore, tenendo conto di questo.

L’API web è in gran parte progettata come API per l’applicazione Discourse front-end. Sebbene sia stata utilizzata con successo per varie integrazioni, è ottimizzata per il suo scopo principale.

2 Mi Piace

Non è inutile, imposta la data created_at come pubblicizzato. Ordina semplicemente i tuoi post per created_at prima di crearli.