Reimposta le impostazioni di visualizzazione delle categorie predefinite

Ciao,

sto cercando di reimpostare categorie predefinite seguite per tutti gli utenti ma senza successo.

Sebbene sembri che nessuna categoria sia selezionata nell’area delle impostazioni, le preferenze degli utenti hanno alcune categorie selezionate.

2 Mi Piace

Ciao @ufukayyildiz

Hai scoperto come procedere con questo problema? Mentre facevo la stessa cosa ho avuto qualche problema. Alla fine non ha funzionato affatto ^^ c.f. Members not receiving emails from Watched category (again)

3 Mi Piace

No, non ancora.

2 Mi Piace

Credo che sia progettato in modo che l’impostazione rispetti le scelte dell’utente. Quindi, se un utente aggiunge manualmente una categoria, questa non verrà sovrascritta.

Potresti essere in grado di fare qualche magia dalla console di Rails, ma penso che un approccio migliore sarebbe educare i tuoi utenti. Cosa ne pensi? O hai una situazione specifica in cui sei tenuto a cambiare il predefinito a prescindere?

1 Mi Piace

Grazie per la tua risposta.

Sarei molto felice di ricevere un comando della console di Rails per copiare le preferenze dell’utente. Capisco perfettamente la scelta progettuale secondo cui le preferenze dell’utente hanno la precedenza sulle impostazioni del sito. Ma il problema è che i siti si evolvono e con essi la loro organizzazione.

Nel nostro caso, siamo passati da un’organizzazione in cui tutti gli annunci venivano pubblicati come un nuovo argomento: il risultato è stato un’enorme quantità di argomenti non discussi (solo 1 post) sulla homepage. Ora vedo che ho iniziato a esaminare questo caso nel febbraio 2023 Unlist or archive a post when it has no reply per category.

Poiché questi annunci sono rilevanti e contengono scadenze, non è stata una scelta nasconderli dalla homepage. Quindi siamo passati a un’organizzazione con 5 argomenti dedicati (tipo di annuncio) in cui ogni post è un nuovo annuncio.[1] Ancora, poiché questi post sono importanti, abbiamo cercato di impostare la categoria su “osservata” per ricevere notifiche in tempo reale agli utenti.

Questo è stato l’inizio della situazione che attualmente ha portato a nessuno che ricevesse nulla tranne user_mentioned e digest. Il passaggio sarebbe stato molto più semplice se si potessero semplicemente reimpostare tutte le preferenze dell’utente ai nuovi valori predefiniti del sito. Oppure, come altra idea, copiare le preferenze dell’utente di una registrazione virtuale di un nuovo utente a tutti gli altri utenti.[2]

Nel frattempo, ho informato gli utenti del fatto che i sistemi a volte non funzionano come previsto e che le email di notifica non arriveranno per un periodo di tempo indefinito.


  1. Qui sarebbe molto utile poter abilitare solo “Rispondi all’argomento”. ↩︎

  2. Che posso immaginare sia attualmente possibile tramite Rails. ↩︎

Ciao di nuovo. Ci sto ancora lavorando e nel nostro caso reimpostare le preferenze dell’utente ha senso perché la struttura del sito è cambiata, il che ha portato a un cambiamento nel modo in cui funzionano le notifiche via email.

Dall’IA di discourse, mi è stato suggerito il seguente comando rails:

UserOption.update_all(email_digests: true, email_level: 1, email_messages_level: 1)

Pensi che questo possa ottenere ciò che stiamo cercando?
Grazie!

Penso che i passaggi seguenti abbiano risolto il problema!

Nelle impostazioni del sito ho impostato la categoria (31) da osservare per impostazione predefinita, retroattivamente.
Verifica:

CategoryUser.where(category_id: 31).pluck(:user_id, :notification_level)

La maggior parte degli utenti ha un notification_level di 3 per la mia categoria 31. :+1:

Ora ci sono due cose che ostacolano l’effetto al 100% di questa modifica:

  1. Le preferenze email globali dell’utente.
  2. Le preferenze di notifica dell’utente per ogni argomento nella categoria (31).

:warning: Le righe seguenti modificheranno le impostazioni personali dei tuoi utenti. Non metterti nei guai.

Innanzitutto, per “riattivare” le email degli utenti, è necessario impostare il email_level degli utenti su 1 (cioè “quando assente”) o 2 (“sempre”):

UserOption.update_all(email_level: 1)

Verifica:

UserOption.group(:email_level).count

Ottengo qualcosa come => {1=>X} con X che è il numero di utenti.

In secondo luogo, il notification_level dell’argomento ha la priorità sul notification_level della categoria (che è stato modificato nelle impostazioni del sito). Il modo più semplice è eliminare le preferenze dell’argomento. Per farlo, basta eliminare le voci argomento per argomento:

TopicUser.where(topic_id: <nr_id_argomento>).destroy_all

Verifica:

TopicUser.where(topic_id: <nr_id_argomento>).exists?

Ottengo qualcosa come => [ ] che significa che nessun utente ha preferenze per l’argomento e il notification_level della categoria sarà quello predefinito per tutti gli utenti.


N.B.: In qualche modo, alcuni utenti non avevano ancora impostato preferenze di notifica per la categoria (31) (cioè nessuna voce nella tabella category_user). Per assicurarsi che il loro notification_level sia impostato, è necessario creare una voce con il valore per notification_level:

User.find_each do |user|
  unless CategoryUser.exists?(user_id: user.id, category_id: 31)
    CategoryUser.create!(user_id: user.id, category_id: 31, notification_level: 3)
  end
end

Verifica:

CategoryUser.where(category_id: 31).pluck(:id, :notification_level)