У меня проблема с самолетом-носителем. Extension_whitelist, похоже, не работает.Внутренний белый список не работает
def extension_whitelist
%w(csv)
end
У меня нет подсказки, почему это не работает. Неважно, какой тип файла я импортирую, он никогда не вызывает ошибку. Вот остальная часть моего кода:
class AttachmentUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_whitelist
%w(csv)
end
end
И контроллер (в основном ясно, подмости с форматированием и отвечает)
class PackagesController < ApplicationController
before_action :set_package, only: [:show, :edit, :update, :destroy]
# GET /packages
# GET /packages.json
def index
@packages = Package.all
end
# GET /packages/1
# GET /packages/1.json
def show
end
# GET /packages/new
def new
@package = Package.new
end
# GET /packages/1/edit
def edit
end
# POST /packages
# POST /packages.json
def create
@package = Package.new(package_params)
respond_to do |format|
if @package.save
format.html { redirect_to @package, notice: 'Package was successfully created.' }
format.json { render :show, status: :created, location: @package }
else
format.html { render :new }
format.json { render json: @package.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /packages/1
# PATCH/PUT /packages/1.json
def update
respond_to do |format|
if @package.update(package_params)
format.html { redirect_to @package, notice: 'Package was successfully updated.' }
format.json { render :show, status: :ok, location: @package }
else
format.html { render :edit }
format.json { render json: @package.errors, status: :unprocessable_entity }
end
end
end
# DELETE /packages/1
# DELETE /packages/1.json
def destroy
@package.destroy
respond_to do |format|
format.html { redirect_to packages_url, notice: 'Package was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_package
@package = Package.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def package_params
params.require(:package).permit(:name, :description, :category_id)
end
end
Поиск ответов я также видел:
def content_type_whitelist
/csv\//
end
но это тоже не работает. Любые идеи, что может быть проблемой? Кроме того, есть ли другой простой способ реализовать это?
@EDIT Проблема решена: я довольно давно сообщил об этой ошибке, и она была недавно исправлена.
Проблема заключается в том, что тип "text/plain" не так специфичен, как я хочу. Мне нужно, чтобы это было «x отдельное значение», где x был бы символом пунктуации, выбранным из списка. Хотя, если я проверяю первую строку данного документа (без заголовков) для определенного количества слов (которые всегда должны быть одинаковыми), разделенных заданным значком препинания, это может сработать. Но есть проблема, мне сначала придется загрузить этот файл у пользователя, и этого я стараюсь избегать. – Kappa