Мое приложение поддерживает загрузку файлов, некоторые метаданные хранятся в БД, а сам файл - в файловой системе.Я пытаюсь сделать метаданные видимыми в приложении до завершения загрузки файла и последующей обработки, но поскольку сохранения выполняются транзакциями, я не добился успеха.Я пробовал обратные вызовы и вызов create_or_update () вместо save (), но все безрезультатно.Есть ли способ сделать это, не переписывая кишки ActiveRecord :: Base?Я даже пытался назвать метод make () вместо save (), но, к сожалению, это не дало результата.
Код ниже «работает» нормально, но база данных не изменяется, пока все остальное не будет завершено.
def save(upload)
uploadFile = upload['datafile']
originalName = uploadFile.original_filename
self.fileType = File.extname(originalName)
create_or_update()
# write the file
File.open(self.filePath, "wb") { |f| f.write(uploadFile.read) }
begin
musicFile = TagLib::File.new(self.filePath())
self.id3Title = musicFile.title
self.id3Artist = musicFile.artist
self.id3Length = musicFile.length
rescue TagLib::BadFile => exc
logger.error("Failed to id track: \n #{exc}")
end
if(self.fileType == '.mp3')
convertToOGG();
end
create_or_update()
end
Любые идеи будут приветствоваться, спасибо.