커스텀 필드 기본값과 카테고리 설정 로그를 가장 잘 처리하는 방법

일부 배경 설명

이것이 발생하는 이유는 다음과 같습니다.

  1. Activitypub 플러그인이 클라이언트에서 해당 필드의 기본값을 설정합니다(여기).

  2. 모든 카테고리 커스텀 필드 변경 사항은 코어에서 카테고리 설정 변경으로 기록됩니다(여기).

“1” (클라이언트에서 카테고리 커스텀 필드 기본값 설정)은 현재 카테고리 커스텀 필드 파이프라인과 작업하는 데 가장 좋은 방법인 것 같습니다. update 카테고리 작업이 자동으로 이를 저장하기 때문이며, 커스텀 필드가 상호 의존적인 경우(AP 플러그인에서와 같이) 기본값이 설정되도록 보장해야 하기 때문입니다.

참고로 현재 플러그인이 서버로 커스텀 필드를 선택적으로 직렬화하는 것은 불가능합니다(몽키 패칭 없이).

위 내용을 고려할 때, "2"가 적절한지 궁금합니다. 데이비드가 지적했듯이, 현재 파이프라인 구성에서는 커스텀 필드의 변경이 반드시 카테고리의 설정 구성 변경을 의미하지는 않습니다(예: nil에서 기본값으로의 변경).

다른 분들의 의견을 듣고 싶습니다. 아마도 카테고리 커스텀 필드 기본값을 처리하는 더 나은 방법을 놓치고 있을 수도 있습니다.

@david 다시 한번 이 이슈를 우선순위 상단으로 올려드립니다. 이 부분에 대해 직관적으로 어떻게 생각하시나요? 카테고리 커스텀 필드 저장 방식을 코어에서 변경해야 한다고 생각하시면 제가 그 부분을 진행해볼 수 있습니다. 아니면 커스텀 필드의 기본값 설정 방식을 새로운 방법으로 찾아볼 수도 있고요. 아니면 당분간 그대로 두는 것도 괜찮을까요?

음, 이건 좀 까다로운 문제네요. 대부분의 플러그인은 카테고리 설정의 기본값이 null 값이기 때문에 이런 문제에 부딪히지 않는 것 같습니다.

상황을 개선할 수 있는 코어 API 변경 사항에 대해 어떤 아이디어가 있으셨나요?

아직 전혀 테스트해보지 않았지만, 현재 상태에서는 원시 HTML 입력 필드를 사용해 무언가를 해결할 수 있을 것 같습니다(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)에서 설명한 기본값 설정을 제거하면 됩니다)