如何验证扩展名“ pdf”

时间:2019-09-11 12:50:48

标签: ruby-on-rails validation pdf rails-activestorage

如果ActiveStorage中上传的文件是否为pdf,我需要进行验证以检查文件扩展名。

我对下面的验证感到厌倦,但是显示一条错误消息,与文件扩展名(也就是pdf文件)无关...

validate :user_file_type, if: :is_existing?
  def user_file_type
    extension = ['file/pdf']
    errors.add(:user_file, "must be a PDF") unless 
    user_file.blob.content_type.in?(extension)
  end

  def is_existing?
    self.user_file.attached?
  end

有人知道我应该如何编写验证,以便仅在上载非pdf时显示错误消息?谢谢

1 个答案:

答案 0 :(得分:2)

有一个用于进行主动存储验证的工具:active_storage_validations

我使用这个宝石,并向您推荐。您可以像这样使用它:

validates :user_file, content_type: ['application/pdf']