我正在使用Rails 6.0.0应用程序,该应用程序具有名为Supplier
的模型,该模型已经具有许多实例。我现在正在寻找使用ActiveStorage将文件添加到供应商实例的方法。我不想创建一个新的Supplier实例,只想将文件添加到现有的Supplier实例中。我尝试在new
和create
方法中执行此操作,但是它不起作用。它想要创建供应商模型的新实例。这是我的new
和create
方法:
has_many_attached :files
def new
@supplier = Supplier.new
end
def create
@supplier = Supplier.new(supplier_params)
if @supplier.save
redirect_to @supplier
else
render :new
end
end
private
def supplier_params
params.require(:supplier).permit(files: [])
end
Supplier
模型还具有名称验证,可确保没有名称就无法创建供应商。如何使用ActiveStorage将文件添加到现有记录而不创建新记录?
Ruby on Rails使用我们所谓的CRUD(创建读取更新删除)。控制器内的Create和New方法将要实例化或创建一个新对象。
您想要的是一种更新方法:
def update
supplier = Suplier.find(params[:id])
if supplier.files.attach(params[:image])
flash[:success] = "yay"
# stuff
else
end
end
在此处https://edgeguides.rubyonrails.org/getting_started.html了解更多信息>