Perché i tag numerici falliscono quando l'ID esiste

Quando provo a creare un tag numerico, ad esempio 2026, funziona se non esiste già un tag con lo stesso ID 2026. Se quell’ID è già in uso, ottengo quel tag invece di 2026.

Sono piuttosto sicuro che si tratti di un bug vecchio, che è stato corretto in qualche momento. O forse ricordo male e non dovrei usare tag numerici per niente :thinking:

Comunque, lo considero un bug — e vorrei molto poter usare gli anni come tag.

I tag numerici dovrebbero essere supportati, e il formato URL canonico corrente è progettato per evitare questa ambiguità.

Ad esempio, se il tag si chiama 2026 e il suo ID tag è 3, l’URL canonico dovrebbe essere:

/tag/2026/3

La forma ambigua è l’URL più vecchio/legacy:

/tag/2026

Questo può essere interpretato come “tag con ID 2026”, quindi se un altro tag ha quell’ID, potrebbe risolvere verso quell’altro tag invece che verso il tag chiamato 2026.


Dove stai cercando di utilizzare o accedere al tag? Se il link è generato da Discourse stesso, mi aspetto che utilizzi l’URL canonico /tag/:slug/:id. Se stai digitando l’URL manualmente, utilizzando un link salvato vecchio, un link personalizzato di tema/plugin o un URL importato/barra laterale/personalizzato, potrebbe ancora utilizzare il formato legacy ambiguo e risolvere verso il tag sbagliato.

Se possibile, penso che dovremmo trattare :foo in /tag/:foo come se fosse sempre uno slug, e richiedere il formato /tag/:foo/:id per gli ID, dove :foo può essere qualsiasi carattere (ad esempio, usare - quando non lo si conosce o non ci si preoccupa).

Ciò aiuterebbe per la compatibilità con le versioni precedenti e anche nei casi in cui lo slug è noto, ma non l’ID, il che sarebbe spesso il caso per i tag, dove il nome è il riferimento comunemente utilizzato.

Gli ID sono ora presenti principalmente per supportare la localizzazione.

1 Mi Piace

Normalmente quando si crea un argomento e si aggiungono tag. O dovrei dire semplicemente quando si aggiunge un tag.

Esempio concreto.

Scrivendo un argomento, ho provato a creare il tag 2013. Ma ho ottenuto sahara perché il percorso è /tag/sahara/2013.

E come avevo chiesto prima :smirking_face: sì, succede anche in modalità sicura.

Quindi,

È vero e questa era la situazione non molto tempo fa.

2 Mi Piace

Grazie per l’esempio concreto. Sono riuscito a riprodurre il problema e sto lavorando alla correzione.

Ho notato durante i test che non creava nemmeno i tag numerici quando questi non avevano un ID corrispondente. (ad esempio, provare a creare il tag 2939858339 non avrebbe alcun effetto e non taggherebbe l’argomento con nulla)