使用ActiveStorage将文件添加到现有记录中

问题描述 投票:0回答:1

我正在使用Rails 6.0.0应用程序,该应用程序具有名为Supplier的模型,该模型已经具有许多实例。我现在正在寻找使用ActiveStorage将文件添加到供应商实例的方法。我不想创建一个新的Supplier实例,只想将文件添加到现有的Supplier实例中。我尝试在newcreate方法中执行此操作,但是它不起作用。它想要创建供应商模型的新实例。这是我的newcreate方法:

supplier.rb

has_many_attached :files

suppliers_controller.rb

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 ruby rails-activestorage
1个回答
0
投票

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了解更多信息>

© www.soinside.com 2019 - 2024. All rights reserved.