Ruby - ActiveAdmin CSV自定义导入

时间:2014-09-30 23:26:49

标签: ruby-on-rails ruby csv activeadmin

目前我有一个ActiveAdmin页面,它从CSV文件中获取数据以填充数据库表(用户)。此表具有一个唯一标识符,该标识符不是关系中使用的ID(用户可以查看的用户友好代码)。 该页面通过" active_admin_import"

执行此操作

现在,我想要填充另一个表(user_paths)同样的事情,问题是,这个表使用来自"用户"的外键。表,所以我希望CSV文件包含来自" users"的唯一标识符。表

有没有解决方案?

1 个答案:

答案 0 :(得分:3)

抱歉迟到了。 最近我向gem wiki添加了一个与你的问题非常相似的新例子。 可以使用before_batch_import分支

使用自定义master挂钩来解决此问题

下一个示例演示如何从作者名称解析author_id值并在执行插入查询之前动态更改csv值。

ActiveAdmin.register Post  do
             active_admin_import validate: true,
              headers_rewrites: { :'Author name' => :author_id },
              before_batch_import: ->(importer) {
                authors_names = importer.values_at(:author_id)
                # replacing author name with author id
                authors   = Author.where(name: authors_names).pluck(:name, :id)
                options = Hash[*authors.flatten] # #{"Jane" => 2, "John" => 1}
                importer.batch_replace(:author_id, options) #replacing "Jane" with 1, etc
              }
         end