나도 이 부분이 약간 거슬립니다. 카테고리의 다른 정보를 업데이트할 때, 반드시 해당 카테고리의 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 아래에 여러 카테고리를 중첩하고 있습니다
)
물론 카테고리 이름도 항상 알지는 못합니다. 카테고리를 업데이트하기 전에 반드시 그 이름을 조회해야 합니다.
해당 파라미터들이 필수 사항이 아니었다면 편했을 텐데 싶습니다. 또는 "해당 필드를 변경하지 않겠다"는 신호를 보낼 수 있는 semacam 문법이 있다면 어떨까요? 예를 들어 _를 전달하면 해당 속성을 현재 값으로 설정하는 식이요. (필수 필드가 있는 이유에 대해 정확히 알지 못하므로, 유용할 수도, 아닐 수도 있는 아이디어를 던져 봅니다.)