Discourse API „Kategorie aktualisieren" erforderliche Parameter

Warum sind die Attribute name, color und text_color für die Kategorie-Aktualisierungsroute erforderlich (Discourse API Docs)?

Es scheint, als könnten Attribute wie der slug aktualisiert werden, ohne dass andere Attribute angegeben werden müssen.

Ich finde das auch etwas ärgerlich. Wenn ich andere Informationen über eine Kategorie aktualisiere, kenne ich nicht unbedingt die color und text_color der Kategorie. Meine Optionen sind also, beides auf etwas Harmloses zu ändern oder einen weiteren API-Aufruf hinzuzufügen, um diese Informationen zunächst zu sammeln. Hier ist ein Beispiel mit dem discourse_api gem:

response = client.categories

cat = response.find {|e| e['name'] == 'Category Name'}

response = client.update_category(
  id: cat['id'],
  name: cat['name'],
  color: cat['color'],
  text_color: cat['text_color'],

  # Füge unten das Attribut (oder die Attribute) hinzu, das (die) du tatsächlich aktualisieren möchtest
  parent_category_id: 7, # Ich verschachtle eine Reihe von Kategorien unter #7
)

Offensichtlich kenne ich auch nicht immer den Kategorienamen. Ich muss diesen definitiv vor der Aktualisierung der Kategorie nachschlagen.

Es wäre hilfreich, wenn diese Parameter nicht erforderlich wären. Alternativ gäbe es vielleicht eine Syntax, um anzuzeigen: „Ich möchte das Feld nicht ändern“? Zum Beispiel, wenn man _ übergibt, wird das Attribut einfach auf den aktuellen Wert gesetzt. (Ich bin mir nicht sicher, warum diese Felder erforderlich sind, daher bringe ich Ideen ein, die nützlich sein könnten oder auch nicht.)

Ich stimme zu. Ich denke nicht, dass Farbfelder bei der Aktualisierung erforderlich sein sollten. Sie sollten wahrscheinlich auch bei der Erstellung nicht erforderlich sein. Ich werde mich darum kümmern und sehen, was ich hier verbessern kann.

Ich habe gerade ein Update dafür gepusht :slight_smile:

Beim Erstellen einer Kategorie ist das Namensfeld weiterhin erforderlich, aber beim Aktualisieren einer Kategorie musst du nicht mehr zusätzlich zum eigentlichen zu ändernden Eigenschaftswert auch noch Name, Farbe und Textfarbe angeben.