# Überschreiben von user\_guardian.rb in einem Plugin (kein Fork nötig!)

**URL:** <https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839>\
**Category:** Development\
**Created:** [3. Januar 2021 um 03:36 UTC](https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839 "2021-01-03T03:36:43Z")\
**Posts on this page:** 1\
**Showing post:** 11

<div class="post-metadata">

**Author:** ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)\
**Post date:** [3. Januar 2021 um 12:40 UTC](https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839/11 "2021-01-03T12:40:48Z")

</div>

Hier ist ein Beispiel, bei dem wir eine Methode im PostGuardian definiert haben:

> <https://github.com/merefield/discourse-topic-previews-sidecar/blob/f4332f9742a37827fd6364b2365c45524f1e7faf/lib/guardian_edits.rb#L10>

Sie könnten etwas Ähnliches für den UserGuardian mit dem vorhandenen Methodennamen tun, wodurch diese Methode überschrieben wird.

#### Einfache Lösung (um es zum Laufen zu bringen, auch wenn es nicht robust ist):

Schreiben Sie einfach den ursprünglichen Methodencode aus und nehmen Sie Ihre Änderung vor. Nachteil: Wenn Discourse den Code ändert, könnte Ihr Plugin die Instanz beschädigen.

#### Fortgeschrittene Lösung (robustere Lösung):

Für zusätzliche Punkte könnten Sie `super` verwenden, um die ursprüngliche Methode zu erben. Das funktioniert jedoch aus Gründen, die ich hier nicht weiter ausführen werde, nicht garantiert. Es ist dennoch Best Practice, da dann Aktualisierungen dieser Methode in Discourse immer berücksichtigt werden, ohne dass Sie Ihr Plugin ändern müssen.

Discourse ist eine Plattform. Es braucht Zeit, sie zu lernen. Gehen Sie es einfach Schritt für Schritt an.

---

_[View the full topic](https://meta.discourse.org/t/overriding-user-guardian-rb-in-a-plugin-no-fork-necessary/174839)._
