Eu também acho isso um pouco irritante. Ao atualizar outras informações sobre uma categoria, nem sempre sei o color e o text_color da categoria. Então, minhas opções são alterar ambos para algo inócuo ou fazer outra chamada à API para coletar essas informações primeiro. Aqui está um exemplo usando o 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'],
# Adicione o(s) atributo(s) que você realmente deseja atualizar abaixo
parent_category_id: 7, # Estou aninhando várias categorias sob a #7
)
Obviamente, nem sempre saberei o nome da categoria também. Definitivamente preciso consultá-lo antes de atualizar a categoria.
Seria útil se esses parâmetros não fossem obrigatórios. Alternativamente, poderia haver alguma sintaxe para sinalizar “Não quero alterar o campo”? Por exemplo, se você passar _, ele simplesmente define esse atributo para o valor atual. (Não tenho certeza do motivo dos campos obrigatórios, então estou lançando ideias que podem ou não ser úteis.)