Не уверен, что это на 100% актуально, но я только что создал контроллер Gallery
, который принимает zip-файл и добавляет содержимое этого zip-файла как Images
, связанное с моделью Gallery
.
Я выполнил это, используя гем Zippy вместе с классом FilelessFile, который расширяет StringIO.
Каждый файл в zip-файле сохраняется как отдельная модель Image
, смонтированная в формате carrieraw.
В вашем случае, я думаю, у вас может быть модель File
(и загрузчик файлов), которая belongs_to
ваша основная модель, а ваша основная модель имеет отношение has_many
к модели File
.
Об освобождении контроллера и "волшебной" обработке без файлов см .: https://gist.github.com/1963073
Примечание: Обратите внимание, что я не использую CarrierWave для обработки загрузки в zip-файл, я использую CarrierWave для сохранения файлов внутри zip-файла. Если вам необходимо также сохранить zip-файл, вы можете создать загрузчик ZipFile и смонтировать zip-файл на основной модели вместе с отдельными файлами или просто повторно использовать загрузчик File
и сохранить zip-файл в поле на основной модели.