С помощью друга мы создали новый класс для / lib, который мы включили в TranslationFile, и, поскольку я использовал Active Storage из Rails 5.2, мы поиграли с BLOB-объектом.
require 'translation_file_processor'
class TranslationFile < ApplicationRecord
has_one_attached :file
after_create :transform_to_translation_groups
def transform_to_translation_groups
p = TranslationFileProcessor.new file.blob
p.process
true
end
end
в lib / translation_file_processor.rb
class TranslationFileProcessor
include ActiveStorage::Downloading
attr_reader :blob
attr_accessor :translations_hash
def initialize(blob)
@blob = blob
end
def process
download_blob_to_tempfile do |file|
...
end
#hash to translation_group
...
group = TranslationGroup.new
...
group.save
end
end