Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails如何将所有活动存储附件复制到新对象?_Ruby On Rails_Activerecord_Ruby On Rails 6_Rails Activestorage - Fatal编程技术网

Ruby on rails Rails如何将所有活动存储附件复制到新对象?

Ruby on rails Rails如何将所有活动存储附件复制到新对象?,ruby-on-rails,activerecord,ruby-on-rails-6,rails-activestorage,Ruby On Rails,Activerecord,Ruby On Rails 6,Rails Activestorage,我有一个在rails应用程序中克隆记录的功能。除了表单数据之外,我还想将附加到源对象的任何活动存储文件上载复制/附加到新对象。有什么办法吗?以下是我的行动: def copy @source = Compitem.find(params[:id]) @compitem = @source.dup render 'new' end class Compitem < ApplicationRecord belongs_to :user has_many_attached :u

我有一个在rails应用程序中克隆记录的功能。除了表单数据之外,我还想将附加到源对象的任何活动存储文件上载复制/附加到新对象。有什么办法吗?以下是我的行动:

def copy
  @source = Compitem.find(params[:id])
  @compitem = @source.dup
  render 'new'
end

class Compitem < ApplicationRecord
 belongs_to :user
 has_many_attached :uploads, dependent: :destroy
end
def拷贝
@source=Compitem.find(参数[:id])
@compitem=@source.dup
呈现“新”
结束
类Compitem
我最终通过使用gem实现了这一点。最后行动:

  def copy
   @source = Compitem.find(params[:id])
   @compitem = @source.deep_clone(include: :uploads_blobs)
   @compitem.save
   render 'new'
  end

我最终通过使用gem实现了这一点。最后行动:

  def copy
   @source = Compitem.find(params[:id])
   @compitem = @source.deep_clone(include: :uploads_blobs)
   @compitem.save
   render 'new'
  end

ActiveStorage附件存储在blobs表中。所以“克隆”一条记录至少意味着必须复制这些行。但是,如果复制对象上的斑点应该指向相同的存储文件(例如S3),或者它应该复制文件,则还必须考虑。你到底研究了什么?我在这里只能看到最模糊的尝试。谢谢你的回复。这些文件存储在本地存储器中。我希望创建新的附件并复制对象,而不是保留相同的附件并将它们链接到同一个。这有意义吗?我环顾四周,看到了一些在has_one的情况下复制一个文件的选项,但无法使其与has_many copy all attachments一起工作。ActiveStorage附件存储在blobs表中。所以“克隆”一条记录至少意味着必须复制这些行。但是,如果复制对象上的斑点应该指向相同的存储文件(例如S3),或者它应该复制文件,则还必须考虑。你到底研究了什么?我在这里只能看到最模糊的尝试。谢谢你的回复。这些文件存储在本地存储器中。我希望创建新的附件并复制对象,而不是保留相同的附件并将它们链接到同一个。这有意义吗?我环顾四周,看到了一些在has\u one的情况下复制一个文件的选项,但无法让它与has\u many copy all attachments一起工作。