使用 Active Storage 验证直接上传的文件类型?是否可以?

uno*_*uno 8 ruby activerecord ruby-on-rails rails-activestorage

我在我的模型中创建了一个方法来验证上传文件类型。但它不起作用,我认为这是因为我使用的是直接上传。

是否可以通过使用活动存储直接上传来验证文件类型?我该怎么办?

我试过:

模型:

validate :correct_video_type


  def correct_video_type
    if video.attached? && video.content_type.in?(%w(video/mov video/mp4 video/avi video/mpeg))
      errors.add(:video, "Must be video format")
    elsif video.attached? == false
      errors.add(:video, "Video must be attached")
    end
  end
Run Code Online (Sandbox Code Playgroud)

看法:

<%= form.file_field :video, class: "upload", direct_upload: true %>
Run Code Online (Sandbox Code Playgroud)

什么都没有得到验证......

我也尝试过前端验证,但这不起作用:

 <%= form.file_field :video, class: "upload", direct_upload: true, accept: 'video/mov, video/mpeg, video/mp4, video/avi' %>
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效。即使前端工作,我仍然想在后端进一步验证它。

我怎样才能验证这一点?

小智 0

你可以使用这个宝石。据我所知它实现了你所做的)