Sto cercando di aggiungere un campo personalizzato a uno script di importazione. Il campo è un menu a tendina.
Sono incappato in questo post, che documentava come creare inizialmente il campo come parte del processo di importazione:
Ha funzionato e il campo è stato creato correttamente con le opzioni del menu a tendina appropriate.
Tuttavia, il codice che sto utilizzando per importare il valore di quel campo non funziona. Ecco cosa sto 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
Il campo che sto importando è una stringa, quindi il codice dovrebbe essere eseguito. Tuttavia, quando eseguo l’importazione, nulla viene importato per quel campo.
Il valore di user[“legacy_custom_field”] in questo esempio è identico alle opzioni create per questo campo, ma non sto validando i dati importati rispetto alle opzioni del menu a tendina. Devo farlo, o forse devo aggiungere i dati in modo diverso dato che si tratta della selezione di un menu a tendina? Quando ho esplorato la tabella user_custom_fields, questo testo sembra essere archiviato comunque come una semplice stringa.
Cosa mi sto perdendo? Grazie in anticipo a chiunque sia in grado di aiutare!
Non sono sicuro di cosa non vada nel tuo codice. Potresti dare un’occhiata all’importatore di Ning, che gestisce i campi personalizzati. Aggiungerei un puts dopo l’if per verificare se viene mai eseguito.
Potrebbe essere necessario chiamare newuser.save!, ma non credo che sia obbligatorio.
@pfaffman, quindi questa è strana, ti è mai capitato di incontrare problemi con newuser.save! che disabilita altre parti di uno script di importazione se lo usi troppo presto? Questo finisce per interrompere qualcosa che deve essere reinizializzato affinché il resto dello script funzioni?
Ho notato che appena ho aggiunto quella riga, gli avatar non venivano più importati, ma commentando quella riga gli avatar venivano importati di nuovo senza problemi. Quella era letteralmente l’unica modifica che ho apportato per correggere il problema degli avatar. Si tratta anche di sezioni completamente diverse dello script.
Potrebbe questo avere a che fare con l’uso di newuser.save! rispetto a newuser.save senza il punto esclamativo finale? Quando termino più blocchi di codice con newuser.save!, ho notato che solo il primo viene effettivamente salvato.