В модели перед загрузкой файла .xls
я хочу, чтобы иметь возможность проверять файлы excel, прежде чем они будут сохранены приложением. Я пытаюсь открыть сохраненный файл excel из объекта :file_url
(столбец в таблице comits, где будут сохраняться файлы .xls
), а затем проверить его, но я получаю ошибку no implicit conversion of Symbol into String
.Проверка загруженного файла Excel перед сохранением с использованием Rails с Roo-xls gem
Валидация работает, когда я помещаю фактический путь к файлу excel, который был загружен и сохранен несущей, в Roo::Excel.new("")
, но это побеждает цель моей проверки.
Как я могу захватить файл excel без его хранения в приложении?
Я ценю помощь! Надеюсь, это не слишком смущает.
Это мой comit.rb
class Comit < ActiveRecord::Base
belongs_to :user
mount_uploader :file_url, ComitUploader, mount_on: :file_url
validates :filename, :file_url, presence: true
validates_format_of :file_url, with: /.xls/, message: "Wrong file format"
before_save :validate_excel
def validate_excel
sheet = Roo::Excel.new(:file_url)
errors = []
header = sheet.row(1)
num_of_columns = sheet.last_column
errors << 'Need headers' unless
errors << 'Need more columns' if num_of_columns < 21
errors
end
end
Когда я сделал это изменение, это еще сказал мне, что не было неявное преобразование в строку. Когда я сделал file_url.to_s, он смог найти правильный путь, однако, я все еще получаю сообщение об ошибке ... но на этот раз, хотя он находит правильный путь, теперь он говорит, что файл не существует ... –
Это сработало после изменения Roo :: Excell в Roo :: Spreadsheet и установки драгоценного камня roo-xls. =] Спасибо за помощь! –
Ницца! Рад, что это сработало. Roo - отличный камень. –