Ruby on rails 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
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一起工作。