2014-09-30 85 views
1

目前,我有一个ActiveAdmin页面从一个CSV文件中获取数据来填充数据库表(用户)。该表有一个唯一的标识符,它不是关系中使用的ID(用户友好的代码供用户查看)。 该页通过“active_admin_import”执行此操作红宝石 - ActiveAdmin CSV自定义导入

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

有没有解决方案?

回答

2

对不起,反应迟缓。 最近,我为gem wiki添加了一个新示例,它与您的问题非常相似。 它可以使用自定义的before_batch_importmaster分支

下一个例子来解决演示了如何动态地执行插入查询之前解决从作者的姓名和更改CSV值AUTHOR_ID值。

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 
+0

太好了!就是这样。 – 2015-01-23 21:26:48