Аудио файлы всегда нулевые, используя Taglib-ruby в рельсах
Я пытаюсь создать приложение в Rails, которое будет загружать аудиофайлы и считывать с них метаданные, чтобы заполнить базу данных. Я использую гем Taglib-ruby для обработки файлов различных типов. Кажется, что загрузки работают сами по себе, но Taglib считает любой файл, переданный ему, как ноль.
Вот мой контроллер:
class UploadsController < ApplicationController
require 'taglib'
def new
end
def create
file = params[:upload]
TagLib::FileRef.open(file) do |fileref|
unless fileref.null?
tag = fileref.tag
# properties = fileref.audio_properties
@song = Song.new(title: tag.title, artist: tag.artist, album: tag.album,
year: tag.year, track: tag.track, genre: tag.genre)
if @song.save
redirect_to songs_path
else
render 'new'
end
else
raise "file was null"
end
end
end
end
и мой взгляд на отправку формы:
<h1> Upload </h1>
<%= form_tag(url: { action: :create }, html: { multipart: true }) do %>
<%= label_tag :upload, "Scan your song:" %>
<%= file_field_tag :upload, multiple: true %>
<br />
<%= submit_tag "Submit" %>
<% end %>
Кажется, что сам Taglib работает - добавление "require 'taglib" удаляет ошибку, которую я получаю в связи с этим, и макет, который я сделал для этого вне rails, работал нормально (поэтому файлы, которые я использую, также не проблема). Каждый раз, когда я запускаю это, поток управления нажимает на мою команду повышения, и никакая запись не сохраняется. Понятно, что fileref.null? возвращает true, что говорит мне о том, что что-то не так с процессом загрузки... но я не уверен, что.
В идеале я хотел бы использовать опцию множественной загрузки и запускать этот процесс для каждого файла последовательно, но я не могу даже получить одну загрузку, чтобы зарегистрироваться как что-либо, кроме нуля.