Меня это тоже немного раздражает. При обновлении другой информации о категории я не всегда знаю её color и text_color. У меня есть два варианта: либо изменить оба поля на нейтральные значения, либо сделать дополнительный вызов API, чтобы сначала собрать эту информацию. Вот пример с использованием 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'],
# Ниже добавьте атрибут(ы), которые вы действительно хотите обновить
parent_category_id: 7, # Я вложенно размещаю несколько категорий под #7
)
Очевидно, что я не всегда знаю и название категории. Мне определённо нужно сначала найти его перед обновлением.
Было бы удобно, если бы эти параметры не были обязательными. Или, может быть, можно добавить какой-то синтаксис, чтобы указать: «Я не хочу менять это поле»? Например, если передать _, то атрибут останется со своим текущим значением. (Я не знаю, почему эти поля обязательны, поэтому просто предлагаю идеи, которые могут оказаться полезными, а могут и нет.)