007
2020 年4 月 30 日 17:29
1
我想在导入脚本中添加一个自定义字段,该字段是一个下拉菜单。
我偶然发现了一篇帖子,其中记录了如何在导入过程中最初创建该字段:
Hi I am playing around with the imports scripts and I want to create a drop down user field. The ning script has an example of creating a text field which I have working, and I am able to add a dropdown w/ no options, but when I change the type to drop down and add an options attribute like so
@interests_field = UserField.find_by_name("My interests5")
unless @interests_field
@interests_field = UserField.create(name: "My interests5", description: "Do you like stuff5?", field_t…
该方法有效,字段已正确创建,并带有合适的下拉选项。
但我用来导入该字段值的代码却无法正常工作。以下是我使用的代码:
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 表时,发现该文本似乎只是以普通字符串形式存储的。
我漏掉了什么?如果有任何人能帮忙,提前感谢!
pfaffman
(Jay Pfaffman)
2020 年4 月 30 日 18:46
2
不太清楚你的代码出了什么问题。你可以看看 Ning 导入器,它支持自定义字段。我建议在 if 语句后加一个 puts,看看它是否会被执行。
你可能需要执行 newuser.save!,但我不认为 这是必须的。
007
2020 年4 月 30 日 20:30
3
这很简单,只需在现有代码后添加 newuser.save! 即可。
谢谢你的提示!现在运行正常了。
007
2020 年5 月 1 日 02:02
4
@pfaffman ,这有点奇怪,你遇到过这种情况吗:在导入脚本中使用 newuser.save! 过早,会导致脚本的其他部分失效?这是否会导致某些需要重新初始化的操作被中断,从而影响脚本其余部分的正常运行?
我注意到,一旦添加了那一行代码,头像就无法导入了;而只要把那行注释掉,头像就能正常导入。这确实是我为修复头像问题所做的唯一改动。而且这两部分代码在脚本中是完全不同的区域。
这是否可能与使用 newuser.save! 而不是不带感叹号的 newuser.save 有关?当我在多个代码块末尾使用 newuser.save! 时,我发现只有第一个块真正执行了保存操作。