カスタムフィールドのデフォルトとカテゴリ設定ログを最もよく処理する方法

いくつかのコンテキスト

これが起こる理由は次のとおりです。

  1. Activity Pub プラグインは、クライアントでこれらのフィールドのデフォルトを設定します(こちら)。

  2. すべてのカテゴリカスタムフィールドの変更は、コアでカテゴリ設定の変更として記録されます(こちら)。

  3. クライアントでカテゴリカスタムフィールドのデフォルトを設定する」は、現時点ではカテゴリカスタムフィールドパイプラインを扱う上で最良の方法のようです。updateカテゴリアクションは自動的にそれらを保存するため、カスタムフィールドが相互依存している場合(APプラグインのように)は、デフォルトが設定されていることを確認したいはずです。

現在、プラグインがカスタムフィールドを選択的にサーバーにシリアライズすることはできません(モンキーパッチなしでは)。

上記を考慮すると、「2」は理にかなっているでしょうか?Davidが指摘するように、パイプラインの現在の構成では、カスタムフィールドの変更は必ずしもカテゴリの設定構成の変更(つまり、nilからデフォルトへの変更)を意味するわけではありません。

他の人の意見を聞きたいです。おそらく、カテゴリカスタムフィールドのデフォルトを処理するより良い方法を見落としているのかもしれません。

「いいね!」 3

@david この件を再度リストの上の方に移動させました。どう思われますか? コアでカテゴリカスタムフィールドの保存方法を変更する必要があると思われる場合は、試してみます。あるいは、カスタムフィールドのデフォルトを設定する新しい方法を見つけようと思います。あるいは、今回はこのままにしておきますか?

これは確かに難しいですね。おそらく、ほとんどのプラグインは、カテゴリ設定の「デフォルト」が null 値であるため、この問題に遭遇しないのでしょう。

状況を改善できるようなコア API の変更について、何かお考えはありますか?

まったくテストしていませんが、生の HTML の input フィールド(Ember の双方向バインドされた <Input> コンポーネントではなく、小文字の input に注意してください)を使用することで、現時点で何か対応できるのではないかと思います。

<input
  value={{or category.custom_fields.my_field "default value"}}
  {{on "change" this.updateMyFieldValue}}
/>

この戦略により、モデルインスタンスから値の読み取り/書き込み方法を制御できます。したがって、UI で値がデフォルトに設定されている場合、カスタムフィールドに「null」として書き込むことができます。

@action
updateMyFieldValue(event){
  let newValue = event.target.value;
  if(newValue === "default value"){
    newValue = null;
  }

  this.category.set("custom_fields.my_field", newValue);
}

(そして、OP の (1) で説明したデフォルト値の設定を削除することになります)

「いいね!」 1