(Ruby) Nur Beiträge auswählen, die von Nicht-Original-Autoren verfasst wurden

Hallo zusammen!

Ich habe vor kurzem begonnen, für eine Community ehrenamtlich tätig zu sein, und meine Aufgabe besteht darin, ein bestehendes Plugin zu aktualisieren. Dieses Plugin ändert derzeit den Tag eines Themas, sobald eine bestimmte Wortanzahl-Schwelle erreicht ist. Ich soll dies so anpassen, dass nur die Wörter aus Beiträgen im Thema gezählt werden, die nicht vom Ersteller des Themas stammen.

Derzeit wird die Wortanzahl mit diesem Codeausschnitt ermittelt:

replies = topic.posts.where('post_number > 1')
reply_word_count = replies.sum(:word_count)

Ich überlege, die Strategie wie folgt umzusetzen:

non_op_replies = topic.posts.where('post.user.username != topic.user.username')
reply_word_count = non_op_replies.sum(:word_count)

Das funktioniert jedoch nicht. Ich habe eine Weile mit der Syntax herumgespielt, kann aber kein funktionierendes Plugin daraus erstellen. Ich habe versucht, Dokumentationen zur Entwicklung in Discourse mit Ruby zu finden, aber leider ohne Erfolg. Ich wäre sehr dankbar, wenn mir jemand helfen oder mich in die richtige Richtung lenken könnte. Da ich auch neu in Ruby bin, entschuldige ich mich im Voraus, falls es sich nur um einen dummen Fehler handelt.

Herzlich willkommen! :partying_face:

Ich bin auch noch ein Ruby-Anfänger und habe dieses Tutorial als sehr hilfreich zum Einstieg empfunden.

Hier ist eine 7-teilige Serie zur Entwicklung von Discourse-Plugins. Zwar enthält sie möglicherweise nicht genau das, wonach du suchst, aber sie ist eine gute Ressource, um zu verstehen, wie ein Discourse-Plugin aufgebaut ist.

Persönlich lerne ich am besten durch Beispiele und indem ich jeden Schritt protokolliere. Daher sind Rails.logger sowie Discourses Logster, auf das du über localhost:3000/logs zugreifen kannst, dafür sehr hilfreich.

Hier findest du die Ruby-Dokumentation für das Discourse-Kernsystem, falls du mutig bist und selbstständig erkunden möchtest.

Vielen Dank für deine Hilfe! Ich werde mir diese sofort ansehen.