我正在尝试将更多文件添加到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 %>
答案 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.rb
、config/environments/test.rb
和 config/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 时遇到了同样的问题,这增加了主动存储领域的支持。)