活动存储has_many_attached正在清除以前的上传

时间:2019-10-29 21:25:28

标签: ruby-on-rails rails-activestorage

我正在尝试将更多文件添加到has_many_attached中,但是当我上传新文件时,将清除先前的文件。上载多个文件确实会添加多个文件,但是在下一次上载时也会清除所有文件。这是预期的行为吗?如果是这样,如何防止清除?

log.rb

class Log < ApplicationRecord
  has_many_attached :uploads
end

_form.html.erb

<%= form_for @log, remote: true do |f| %>
  <%= f.file_field :uploads, multiple: true %>
<% end %>

2 个答案:

答案 0 :(得分:0)

我用这样的hidden_​​field标记保留了旧资产:

<% @product.photos.each do |ph| %>
   <%= f.hidden_field :photos, multiple: true, value: ph.signed_id %>
<% end %>

这对我有用

答案 1 :(得分:0)

您可以通过在 config/environments/development.rbconfig/environments/test.rbconfig/environments/production.rb 中添加以下行来防止覆盖现有附件,如 quantavi 中的 this issue 所示: https://github.com/richardvenneman/trestle-active_storage/issues/41

config.active_storage.replace_on_assign_to_many = false

显然在 Rails 6 中,再次上传文件时的默认行为是清除以前上传的文件。您可以在评论中找到有关它的更长的话题 in this Rails issue,其中 Aarthi 链接。上一行更改了此设置,以便连续上传附加文件而不是覆盖旧文件。

(正如您可能从问题链接中推断出的,我在使用 Trestle 管理面板和补充的 trestle-active_storage gem 时遇到了同样的问题,这增加了主动存储领域的支持。)