Ich möchte für alle Gruppen eines Benutzers bei jedem Beitrag in einem Thema (unter dem Benutzernamen) ein kleines Flair anzeigen. Ich habe die grundlegende Funktionalität am Laufen, stoße aber an die Wand, wenn es darum geht, die Gruppen des Benutzers zu finden, der den Beitrag erstellt hat. In den Attributen des Post-Meta-Data-Widgets kann ich einige Details des Benutzers finden, aber Gruppen sind nicht enthalten. Ich denke, ich muss die Gruppen zum Post-Serializer hinzufügen, bin mir aber nicht sicher, wie das geht.
Hallo,
Ich bin kein Experte, aber in einem Plugin können Sie das Feld groups zum Post-Serializer hinzufügen, etwa so:
add_to_serializer(
:post,
:groups
) { object.user&.groups }
Beachten Sie jedoch, dass jeder sehen kann, in welcher Gruppe sich eine Person befindet, solange es so ist.
Abgesehen davon glaube ich, dass der Gruppenname für jeden sichtbar sein wird, unabhängig von den Berechtigungen, solange Sie ein Flair verwenden.
Sie könnten auch ein neues Feld available_flairs einfügen, um nur die notwendigen Felder der Gruppen-Flairs zurückzugeben:
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
Ich hoffe, das hilft. ![]()
Diese Komponente könnte beim Erstellen von Beiträgen von Interesse sein, vielleicht um Beiträge während der Erstellung mit “Flairs” zu versehen?
Die zweite Lösung ist genau das, wonach ich suche, aber ich bekomme sie nicht zum Laufen. Aus irgendeinem Grund wird das Array available_flairs überhaupt nicht angezeigt. Gehe ich richtig in der Annahme, dass der Code in die plugins.rb gehört?
Um im Post-Meta-Daten-Kontext zu erscheinen, versuchen Sie, die API zu verwenden. Dies sollte funktionieren!
api.includePostAttributes("available_flairs");
Das hat den Trick gemacht. Vielen Dank für die Hilfe!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
