Yo también encuentro esto ligeramente irritante. Al actualizar otra información sobre una categoría, no necesariamente conozco el color ni el text_color de la misma. Por lo tanto, mis opciones son cambiar ambos a algo inocuo o añadir otra llamada a la API para recopilar esa información primero. Aquí tienes un ejemplo usando el 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'],
# Añade el (los) atributo(s) que realmente quieras actualizar a continuación
parent_category_id: 7, # Estoy anidando varias categorías bajo la #7
)
Obviamente, tampoco siempre sabré el nombre de la categoría. Definitivamente necesito consultarlo antes de actualizar la categoría.
Sería útil si esos parámetros no fueran obligatorios. Alternativamente, ¿podría haber alguna sintaxis para indicar «no quiero cambiar el campo»? Por ejemplo, si pasas _, simplemente establecería ese atributo en su valor actual. (No estoy seguro de la razón por la que los campos son obligatorios, así que estoy lanzando ideas que pueden o no ser útiles.)