Importar un campo de perfil de usuario personalizado desde software de foro heredado

Busco agregar un campo personalizado a un script de importación. El campo es un menú desplegable.

Me topé con esta publicación, que documenta cómo crear el campo inicialmente como parte del proceso de importación:

Funcionó y el campo se crea correctamente con las opciones adecuadas del menú desplegable.

Sin embargo, el código que estoy usando para importar el valor de ese campo no funciona. Esto es lo que estoy utilizando:

  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

El campo que estoy importando es una cadena, por lo que el código debería ejecutarse. Sin embargo, al ejecutar la importación, no se importa nada para ese campo.

El valor de user[“legacy_custom_field”] en este ejemplo es idéntico a las opciones creadas para este campo, pero no estoy validando los datos importados contra las opciones del menú desplegable. ¿Necesito hacer eso, o tal vez agregar los datos de manera diferente ya que se trata de seleccionar una opción de un menú desplegable? Cuando exploré la tabla user_custom_fields, este texto parece almacenarse como una cadena simple de todos modos.

¿Qué me estoy perdiendo? ¡Gracias de antemano si alguien puede ayudar! :+1:

No estoy seguro de qué ocurre con tu código. Podrías echar un vistazo al importador de Ning, ya que maneja campos personalizados. Añadiría un puts después del if para ver si alguna vez se ejecuta.

Quizás necesites hacer un newuser.save!, pero no creo que sea obligatorio.

2 Me gusta

Fue tan sencillo como añadir newuser.save! después del código existente.

¡Gracias por el consejo! Ahora funciona perfectamente.

1 me gusta

@pfaffman, esto es extraño, ¿has tenido problemas con newuser.save! que desactiva otras partes de un script de importación si lo usas demasiado pronto? ¿Esto finaliza algo que necesita ser reiniciado para que el resto del script funcione?

Noté que una vez que añadí esa línea, los avatares ya no se importaban, pero al comentar esa línea, los avatares volvieron a importarse sin problemas. Eso fue literalmente el único cambio que hice para corregir el problema de los avatares. Además, son secciones completamente diferentes del script. :thinking:

¿Esto podría tener algo que ver con usar newuser.save! en lugar de newuser.save sin el signo de exclamación al final? Cuando termino varios bloques de código con newuser.save!, noto que solo el primero realmente guarda.

1 me gusta