目前我有一个ActiveAdmin页面,它从CSV文件中获取数据以填充数据库表(用户)。此表具有一个唯一标识符,该标识符不是关系中使用的ID(用户可以查看的用户友好代码)。 该页面通过" active_admin_import"
执行此操作现在,我想要填充另一个表(user_paths)同样的事情,问题是,这个表使用来自"用户"的外键。表,所以我希望CSV文件包含来自" users"的唯一标识符。表
有没有解决方案?
答案 0 :(得分:3)
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