2

フォームの検証を実行するときに、Refile とその複数のファイル オプションに関する問題があります。

添付ファイル付きのフォーム (「docs A」としましょう) を送信し、フォームが検証に失敗した場合 (電子メールが必要だったためとしましょう)、refile は次のように動作します。

  • 他のファイルが添付されておらず、フォーム (今回は有効なフォーム) を再送信すると、「docs A」が保持され、キャッシュからストア フォルダーに移動されます (すべて refile によって行われます)。これはすべて良いです。
  • 他のファイル ("docs B") がフォームに含まれていて、後者が送信された場合、"docs B" のみが考慮されます (フォームが有効か無効かに関係なく、:append 値に関係なく -- チェックします)。以下のモデル)。フォームが有効だった場合、「docs B」のみが保持されます。フォームが無効な場合は、フォームを有効にして再送信すると、「ドキュメント B」が保持されます (新しいファイルを添付しない限り)。

「docs A」と「docs B」も単一のファイルである可能性があります。同じ動作になります。

私は次のモデルを持っています

class User < ActiveRecord::Base
  has_many :documents, dependent: :destroy
  accepts_attachments_for :documents, append: true, attachment: :file
end

class Document < ActiveRecord::Base
  belongs_to :user
  attachment :file, type: :document
end

形式は次のとおりです。

<%= f.attachment_field :documents_files, multiple: true, direct: true, presigned: true %>

refile 0.5.5 を使用しています。

すでに隠し入力を含めようとしました

<% @user.documents.each do |doc| %>
  <%= f.hidden_field "documents_files", multiple: true, value: {id: doc.file_id, filename: doc.file_filename, size: doc.file_size} %>
<%# end %>

ただし、新しい添付ファイルが含まれている場合は「オーバーライド」されます。

refile の複数と追加の動作が実際に機能しているかどうか、または私の実装が間違っているかどうか疑問に思っていました。

予想される動作は、新しい添付ファイルが既存の添付ファイルに追加されることです (つまり、"docs A" + "docs B")。

助けていただければ幸いです!

4

0 に答える 0