Я хочу добавить пользовательское поле в скрипт импорта. Это поле представляет собой выпадающий список.
Я наткнулся на этот пост, где описывается, как создать такое поле в процессе импорта:
Это сработало, и поле было создано корректно с нужными опциями выпадающего списка.
Однако код, который я использую для импорта значения этого поля, не работает. Вот что я использую:
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, этот текст, похоже, всё равно хранится как простая строка.
Чего мне не хватает? Заранее спасибо, если кто-то сможет помочь!
Не совсем понятно, что не так с вашим кодом. Возможно, стоит посмотреть на импортер Ning, так как он работает с пользовательскими полями. Я бы добавил puts после if, чтобы проверить, выполняется ли этот блок кода вообще.
Возможно, потребуется вызвать newuser.save!, но я не думаю, что это обязательно.
@pfaffman, это странно. Ты когда-нибудь сталкивался с проблемой, когда newuser.save! отключает другие части скрипта импорта, если вызывать его слишком рано? Не завершает ли это что-то, что нужно перезапустить, чтобы остальная часть скрипта работала?
Я заметил, что как только добавил эту строку, аватары перестали импортироваться, но закомментирование этой строки снова позволило аватарам загружаться без проблем. Это было буквально единственное изменение, которое я внес для исправления проблемы с аватарами. При этом эти части скрипта совершенно разные.
Может ли это быть связано с использованием newuser.save! вместо newuser.save без восклицательного знака в конце? Когда я завершаю несколько блоков кода newuser.save!, я заметил, что сохраняется только первый из них.