Estou procurando adicionar um campo personalizado a um script de importação. O campo é um menu suspenso.
Encontrei este post, que documentou como criar o campo inicialmente como parte do processo de importação:
Funcionou e o campo foi criado perfeitamente, com as opções do menu suspenso adequadas.
No entanto, o código que estou usando para importar o valor desse campo não está funcionando. Veja o que estou usando:
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
O campo que estou importando é uma string, então o código deveria estar sendo executado. No entanto, ao rodar a importação, nada é importado para esse campo.
O valor de user[“legacy_custom_field”] neste exemplo é idêntico às opções criadas para esse campo, mas não estou validando os dados importados contra as opções do menu suspenso. Preciso fazer isso, ou talvez adicionar os dados de forma diferente, já que se trata de selecionar um menu suspenso? Quando explorei a tabela user_custom_fields, esse texto parece ser armazenado como uma simples string, de qualquer forma.
O que estou deixando passar? Agradeço desde já se alguém puder ajudar!
Não tenho certeza do que está acontecendo com seu código. Você pode dar uma olhada no importador do Ning, pois ele lida com campos personalizados. Eu adicionaria um puts após o if para ver se ele é acionado em algum momento.
Você pode precisar fazer um newuser.save!, mas não acho que seja obrigatório.
@pfaffman, então isso é estranho. Você já teve problemas com newuser.save! desabilitando outras partes de um script de importação se usado muito cedo? Isso encerra algo que precisa ser reiniciado para que o restante do script funcione?
Percebi que, assim que adicionei essa linha, os avatares deixaram de ser importados, mas ao comentar essa linha, os avatares voltaram a ser importados normalmente. Essa foi literalmente a única alteração que fiz para corrigir o problema dos avatares. Além disso, essas são seções completamente diferentes do script.
Isso poderia ter algo a ver com o uso de newuser.save! versus newuser.save sem o ponto de exclamação no final? Quando finalizo vários blocos de código com newuser.save!, notei que apenas o primeiro realmente salva.