我正在尝试将CSV文件导入具有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