Ich bin nicht ganz sicher, was du erreichen möchtest, aber ich denke, du suchst nach GroupUser. Du kannst eine Liste der Gruppen-IDs und der Benutzer-IDs ihrer Besitzer mit etwas wie folgendem erhalten:
Danke, das ist definitiv ein Schritt nach vorn. Mein Ziel ist es, die Eigentümer einer Gruppe unter dem Gruppennamen auf der Gruppenindexseite anzuzeigen.
Du musst ein kleines Plugin schreiben, um die richtigen Informationen zu serialisieren. Ich habe deinen Beitrag im Marketplace gesehen. Hoffentlich nimmt sich jemand deiner an!
Ich habe etwas als sehr rohen Proof of Concept zusammengebastelt, das dir vielleicht als Ausgangspunkt dient, um es selbst herauszufinden:
my-plugin/plugin.rb
# frozen_string_literal: true
# name: Group Test
# about: Group Test
# version: 0.1
# authors: Tester
# url: https://github.com/someone/something
enabled_site_setting :group_test_enabled
after_initialize do
add_to_serializer(:basic_group, :owners) do
GroupUser.where(group_id: object.id, owner: true).pluck("user_id")
end
end
Wenn du all das zusammenfügst und das Plugin in deinen Site-Einstellungen aktivierst, solltest du die Benutzer-IDs der Gruppenbesitzer auf der Gruppenseite aufgelistet sehen.
Ich kann dir darüber hinaus nicht weiterhelfen, also viel Erfolg!
Das ist extrem hilfreich – vielen Dank. Ich habe verstanden, dass Sie keine weitere Code-Hilfe leisten können, aber ich hoffe, ich kann zwei allgemeine Fragen stellen, die auch für andere hilfreich sein könnten:
–Könnten Sie kurz erklären, warum ein Serializer hier notwendig ist? (Ich versuche, das nicht nur für diesen Fall, sondern auch für andere Anpassungen zu verstehen.)
Und noch eine kurze Frage: Könnte ich das nicht einfach in meinem Dashboard umsetzen? (Ein Plugin zu erstellen wäre zwar definitiv organisierter, aber da ich einen gehosteten Plan habe, kann ich keine neuen Plugins direkt importieren – das erfordert zumindest einige zusätzliche Schritte.)
Klar Die Daten werden standardmäßig nicht im BasicGroupSerializer offengelegt. Wir nehmen nur auf, was wir benötigen.
Es ist ein bisschen wie ein Labyrinth, aber der einzige Grund, warum die groups-info-Komponente über das verfügt, was sie hat, ist, dass sie group von ihrer übergeordneten Vorlage erhält:
Und die übergeordnete Vorlage erhält es vom Controller:
Das fürchte ich nicht. Es sei denn, es gibt irgendeine Magie, von der ich nichts weiß!
Hallo @tshenry, ich versuche, ein Plugin zu erstellen, das Code enthält, ähnlich wie du ihn oben bereitgestellt hast, um den Gruppenbesitzer offenzulegen. Eine Frage, die ich gerade kläre:
Wie hast du festgestellt, dass dieser Serialisierer der richtige für diesen Fall ist?
Das habe ich zusammengetragen: Im Groups-Controller ruft die index-Aktion die Funktion (bzw. Methode) render_json_dump auf, die den BasicGroupSerializer im Aufruf von serialize_data verwendet.
Die relevante Seite zur Anzeige der Gruppendaten ist der Groups-Index, daher ist die index-Aktion im Controller der richtige Anhaltspunkt.
Ist das der Grund, warum du weißt, dass der BasicGroupSerializer hier der richtige ist, auf den Bezug genommen werden soll?
Wenn das alles korrekt ist, würde dann der GroupShowSerializer für die Anzeige der Gruppe auf der Detailseite verwendet werden, da dieser Serialisierer in der show-Aktion des Controllers referenziert wird? (Die Seite mit den Details einer Gruppe – auch wenn es keine explizite „groups.show“-Ansicht zu geben scheint.)
Und was ist, wenn kein Serialisierer referenziert wird, wie beispielsweise in der new-Aktion im Controller?
Eine zusätzliche Anmerkung, die wirklich verwirrend ist und mich anfangs sehr verwirrt hat: Rails ist ein Framework und nutzt sehr strenge Namenskonventionen, um seine Magie zu entfalten. Wenn man es nicht gewohnt ist, ist nicht sofort ersichtlich, wie alles zusammenhängt, aber sobald man die Namenskonventionen berücksichtigt, wird es allmählich klarer.
Danke für den Hinweis – das ist sehr hilfreich. Ich finde die Routendatei jedoch etwas verwirrend. So weit ich das überblicke, wird beispielsweise keine Gruppen-Controller-Aktion groups#index referenziert, obwohl dies eindeutig die relevante Aktion für die Hauptseite der Gruppe ist. Allerdings sehe ich die Aktion groups#index, wenn ich folgenden Befehl ausführe:
% rails routes. Das ist wohl auch eine hilfreiche Möglichkeit zu erkennen, wie eine bestimmte Seite einem Controller zugeordnet ist.