从旧版论坛软件导入自定义用户资料字段

我想在导入脚本中添加一个自定义字段,该字段是一个下拉菜单。

我偶然发现了一篇帖子,其中记录了如何在导入过程中最初创建该字段:

该方法有效,字段已正确创建,并带有合适的下拉选项。

但我用来导入该字段值的代码却无法正常工作。以下是我使用的代码:

  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 表时,发现该文本似乎只是以普通字符串形式存储的。

我漏掉了什么?如果有任何人能帮忙,提前感谢!:+1:

不太清楚你的代码出了什么问题。你可以看看 Ning 导入器,它支持自定义字段。我建议在 if 语句后加一个 puts,看看它是否会被执行。

你可能需要执行 newuser.save!,但我不认为这是必须的。

这很简单,只需在现有代码后添加 newuser.save! 即可。

谢谢你的提示!现在运行正常了。

@pfaffman,这有点奇怪,你遇到过这种情况吗:在导入脚本中使用 newuser.save! 过早,会导致脚本的其他部分失效?这是否会导致某些需要重新初始化的操作被中断,从而影响脚本其余部分的正常运行?

我注意到,一旦添加了那一行代码,头像就无法导入了;而只要把那行注释掉,头像就能正常导入。这确实是我为修复头像问题所做的唯一改动。而且这两部分代码在脚本中是完全不同的区域。:thinking:

这是否可能与使用 newuser.save! 而不是不带感叹号的 newuser.save 有关?当我在多个代码块末尾使用 newuser.save! 时,我发现只有第一个块真正执行了保存操作。