Mag*_*Sz. 9 ruby-on-rails ruby-on-rails-5 rails-activestorage
是否可以添加验证以仅使用Active Storage接受.pdf和.doc文件?
mic*_*sek 15
目前,您必须编写自己的验证程序,查看附件的MIME类型:
class Item
has_one_attached :document
validate :correct_document_mime_type
private
def correct_document_mime_type
if document.attached? && !document.content_type.in?(%w(application/msword application/pdf))
document.purge # delete the uploaded file
errors.add(:document, 'Must be a PDF or a DOC file')
end
end
end
Run Code Online (Sandbox Code Playgroud)
此外,还有一些有用的快捷方法image?,audio?,video?和text?对多种MIME类型检查.
有一个gem可以为主动存储提供验证
gem 'activestorage-validator'
Run Code Online (Sandbox Code Playgroud)
https://github.com/aki77/activestorage-validator
validates :avatar, presence: true, blob: { content_type: :image }
validates :photos, presence: true, blob: { content_type: ['image/png', 'image/jpg', 'image/jpeg'], size_range: 1..5.megabytes }
Run Code Online (Sandbox Code Playgroud)
由于 ActiveStorage 还没有验证,我在我的表单中发现了以下帮助。
<div class="field">
<%= f.label :deliverable %>
<%= f.file_field :deliverable, direct_upload: true,
accept: 'application/pdf,
application/zip,application/vnd.openxmlformats-officedocument.wordprocessingml.document' %>
</div>
Run Code Online (Sandbox Code Playgroud)