ruby 当使用载波和雾在S3上保存文件时,在模型中的哪个点触发验证?

hmtdttj4  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(78)

有一个带有载波上传器的ActiveRecode模型。我对下面的问题感兴趣。验证在什么时候发生?在载波上传器中触发存储方法之前还是之后?
下面是我的模型的一个例子:

class File < ApplicationRecord
  mount_uploader :document, FileUploader

  validate :validate_file

  private

  def validate_file
    errors.add(:document, 'error')
  end
end

validate_file方法在什么时候起作用?在CarrierWave将文件放入存储器之后还是之前?

pftdvrlh

pftdvrlh1#

实际上,当您使用Carrierwave上传文件时,有两种方式触发验证-
1.在存储之前-before :store-在文件上传之前要做的事情,检查文件类型,更改文件名,检查连接,检查用户是否经过身份验证等
1.存储后-after :store-一旦文件上传需要做什么-更新表中的上传状态,发送电子邮件,创建后台作业,删除临时文件等
你需要注意一件事-什么也不会发生,如果你不添加回调,文件是直接上传没有任何检查或验证。
要查看实际代码,请在carrierwave repo中跳转到callbacks.rb file

相关问题