Trovare tutti i gruppi dell'autore in una discussione

Vorrei mostrare un piccolo tocco di stile per tutti i gruppi di un utente su ogni post in un argomento (sotto il nome utente). Ho la funzionalità di base funzionante, ma mi sono bloccato nel trovare i gruppi dell’utente che ha effettuato il post. Negli attrs del widget post-meta-data, posso trovare alcuni dettagli dell’utente, ma i gruppi non sono inclusi. Penso di dover aggiungere i gruppi al serializzatore del post, ma non sono sicuro di come farlo.

2 Mi Piace

Ciao,

Non sono un esperto, ma in un plugin puoi aggiungere il campo groups al serializzatore del post, qualcosa del genere:

add_to_serializer(
    :post,
    :groups
) { object.user&.groups }

Tuttavia, tieni presente che, così com’è, chiunque può vedere in quale gruppo si trova una persona.
Detto questo, credo che finché utilizzi un flair, il nome del gruppo sarà visibile a chiunque, indipendentemente dalle autorizzazioni.

Potresti anche inserire un nuovo campo available_flairs per restituire solo i campi necessari dei flair del gruppo:

add_to_serializer(:post, :available_flairs) do
  flairs = Array(object.user&.groups&.map do |group|
    next unless group.flair_url
    {
      id: group.id,
      name: group.name,
      url: group.flair_url,
      bgColor: group.flair_bg_color,
      color: group.flair_color
    }
  end).compact

  flairs
end

Spero che questo aiuti. :+1:

3 Mi Piace

Questo componente potrebbe essere di interesse durante la creazione di un post, magari per aggiungere dei “flair” al post durante la creazione?

La seconda soluzione è esattamente quello che sto cercando, ma non riesco a farla funzionare. Per qualche motivo l’array available_flairs non compare affatto. Sto presumendo correttamente che il codice debba andare in plugins.rb?

Per apparire nel contesto post-meta-data, prova a usare l’API. Dovrebbe funzionare!

api.includePostAttributes("available_flairs");

Ha funzionato. Grazie per l’aiuto!

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.