如何通过具有active_admin_import的几个“ has_many”外键关系的CSV文件导入Rails模型?

时间:2019-04-05 23:44:40

标签: ruby-on-rails activeadmin

我正在尝试将CS​​V文件导入具有3对多“ has_many”关系的Rails模型中。使用active_admin_import gem执行此操作的最佳方法是什么?

这是我第一次使用active_admin_import。

这是模型:

class Summary < ApplicationRecord
  has_many :summary_entities
  has_many :entities, through: :summary_entities
  has_many :summary_foreign_entities
  has_many :foreign_entities, through: :summary_foreign_entities
  has_many :summary_systems
  has_many :systems, through: :summary_systems
end

CSV列标题为:

date    title   description entities    entities    entities    entities    entities    entities    entities    entities    entities    entities    systems systems systems systems systems systems systems systems systems systems systems systems foreign_entities    foreign_entities    foreign_entities    foreign_entities    foreign_entities    foreign_entities    foreign_entities    foreign_entities    foreign_entities    

CSV文件的每个“ has_many”属性都有多个列。一些列值可能为空。此CSV格式可与rails_admin_import一起使用。

我不确定合并这样的列是否更好:

date    title   description entities    systems     foreign_entities        

实体,系统,foreign_entities单元格将具有分隔值以表示一个或多个has_many关系。

我尝试了第一种CSV文件列导入格式,并从activeadmin收到此错误:

Error: can't write unknown attribute `entities`

我应该使用哪种CSV格式来表示active_admin_import的多个“ has_many”引用?

找出CSV格式后,应该如何配置active_admin_import来处理具有many_to_many字段的列?我猜这是一个两步过程:

1。)插入新的摘要。 2.)对于每个“额外”列,请插入与该新摘要对应的一行“ has_many”属性。

如何处理每个“额外”列并引用刚刚插入的摘要的ID?

它可以是一对一的交易,所以如果某件事失败了,一切都会回滚?

我猜是这样的:

ActiveAdmin.register Summary  do
       active_admin_import :validate => true,
                           :after_import => <Iterate through each inserted summary and add as many columns as necessary for its "has_many" attributes>
    end

0 个答案:

没有答案