Я пытаюсь импортировать CSV-файл в модель рельсов с 3 отношениями «многие к многим» has_many. Какой лучший способ сделать это, используя гем active_admin_import?
Я впервые использую 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 мне следует использовать для представления нескольких ссылок "has_many" для active_admin_import?
После того, как я выясню формат CSV, как мне следует настроить active_admin_import для обработки столбцов с полями many_to_many? Я предполагаю, что это двухэтапный процесс:
1.) Включить новое резюме.
2.) Для каждого «лишнего» столбца вставьте строку, соответствующую этому новому атрибуту summary'a «has_many».
Как мне обработать каждый «лишний» столбец и сослаться на только что вставленный идентификатор резюме?
Может ли это быть транзакция один в один, поэтому если что-то не получается, все откатывается?
Полагаю, это примерно так:
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