なぜ更新カテゴリのルート(Discourse API Docs の属性が必須なのでしょうか?
slug などの属性は、他の属性を指定せずに更新できるはずです。
なぜ更新カテゴリのルート(Discourse API Docs の属性が必須なのでしょうか?
slug などの属性は、他の属性を指定せずに更新できるはずです。
これには少しイライラします。カテゴリに関する他の情報を更新する際、必ずしもそのカテゴリの 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 の下にネストしています
)
もちろん、カテゴリ名も常に知っているわけではありません。カテゴリを更新する前に、必ずそれを調べる必要があります。
もしこれらのパラメータが必須でなければ便利でしょう。あるいは、「このフィールドは変更したくない」と示すような構文があればよいかもしれません。例えば、_ を渡せば、その属性を現在の値のままに設定するといった具合です。(必須フィールドの理由がはっきりしないため、有用かどうかはわかりませんが、アイデアを提示しています。)
同意します。更新時に色フィールドを必須にする必要はないと思います。おそらく、作成時にも必須にする必要はないでしょう。これを確認し、改善できる点を探ります。
この更新をプッシュしました ![]()
カテゴリの作成時には名前フィールドが引き続き必須ですが、カテゴリの更新時には、更新したい実際のプロパティに加えて、名前、色、テキスト色を指定する必要がなくなりました。