Я хочу передать .xlsx tempfile из формы в модель импорта. Тем не менее, я столкнулся с ActiveModel::ForbiddenAttributesError
. Я правильно определил сильные параметры, но может быть особенность при работе с виртуальными столбцами для классов без атрибутов.ActiveModel :: ForbiddenAttributesError для виртуального столбца в классе без атрибутов
Логика модели работает, указывая на локальный путь к файлу, поэтому я оставил большую часть ее. Вот мой код:
new.html.erb
<%= form_for @package_import do |f| %>
<%= f.file_field :file %>
<%= f.submit "Import" %>
<% end %>
package_imports_controller.rb
class PackageImportsController < ApplicationController
def new
@package_import = PackageImport.new
end
def create
@package_import = PackageImport.new(params[:package_import])
if @package_import.save
redirect_to root_url, notice: "Imported packages"
else
render :new
end
end
private
def package_import_params
params.require(:package_import).permit(:file)
end
end
package_import.rb
class PackageImport
include ActiveModel::Model
...
end
Это был шаг в правильном направлении. Поскольку: файл является виртуальным атрибутом, мне также пришлось добавить 'attr_accessor: file' в модель, чтобы она работала должным образом. – sso777