레거시 포럼 소프트웨어에서 사용자 프로필 필드 가져오기

수입 스크립트에 커스텀 필드를 추가하려고 합니다. 해당 필드는 드롭다운입니다.

처음에 이 필드를 수입 과정의 일부로 생성하는 방법을 문서화한 아래 포스트를 발견했습니다:

정상적으로 작동했으며, 필드가 올바른 드롭다운 옵션과 함께 잘 생성되었습니다.

하지만 해당 필드 값을 수입하는 데 사용 중인 코드는 작동하지 않습니다. 사용 중인 코드는 다음과 같습니다:

  post_create_action: proc do |newuser|
    if user["legacy_custom_field"].is_a?(String)
      newuser.custom_fields = {"user_field_#{@legacy_field.id}" => user["legacy_custom_field"]}
    end
  end

수입하려는 필드는 문자열이므로 코드가 실행되어야 합니다. 그러나 수입을 실행하면 해당 필드에 아무것도 수입되지 않습니다.

이 예시에서 user[“legacy_custom_field”]의 값은 이 필드에 생성된 옵션과 동일하지만, 수입된 데이터를 드롭다운 옵션과 비교하여 검증하지는 않고 있습니다. 드롭다운을 선택하는 것이므로 검증을 수행해야 하는지, 아니면 데이터를 다른 방식으로 추가해야 하는지 궁금합니다. user_custom_fields 테이블을 살펴본 결과, 이 텍스트는 결국 단순한 문자열로 저장되는 것으로 보입니다.

무엇을 놓치고 있는 걸까요? 도움을 주실 수 있다면 미리 감사드립니다! :+1:

코드가 왜 그런 건지 잘 모르겠네요. Ning 가져오기(importer)를 확인해 보시는 게 좋을 것 같아요. 커스텀 필드를 처리하고 있거든요. if 블록 뒤에 puts를 추가해서 실제로 실행되는지 확인해 보세요.

newuser.save!를 호출해야 할 수도 있지만, 꼭 필요하다고는 생각하지 않습니다.

기존 코드 뒤에 newuser.save!를 추가하는 것만으로 간단히 해결할 수 있었습니다.

팁 감사합니다! 이제 정상적으로 작동합니다.

@pfaffman, 이게 좀 이상하네요. newuser.save!를 너무 일찍 사용했을 때, 가져오기 스크립트의 다른 영역이 비활성화되는 문제를 겪어 본 적이 있으신가요? 나머지 스크립트가 작동하려면 다시 초기화해야 하는 무언가를 종료시키는 건가요?

그 줄을 추가한 후부터 아바타가 더 이상 가져오지지 않는다는 걸 알게 되었는데, 해당 줄을 주석 처리하자 아바타가 다시 정상적으로 가져와졌습니다. 아바타 문제를 해결하기 위해 제가 실제로 변경한 것은 그것뿐이었습니다. 그것들은 스크립트의 완전히 다른 섹션이기도 하네요. :thinking:

이것이 newuser.save!와 끝에 “!”가 없는 newuser.save를 사용하는 것 때문일 수도 있을까요? 여러 코드 블록을 newuser.save!로 끝냈을 때, 실제로 저장되는 것은 첫 번째뿐이라는 걸 알아차렸습니다.