有一个带有载波上传器的ActiveRecode模型。我对下面的问题感兴趣。验证在什么时候发生?在载波上传器中触发存储方法之前还是之后?
下面是我的模型的一个例子:
class File < ApplicationRecord
mount_uploader :document, FileUploader
validate :validate_file
private
def validate_file
errors.add(:document, 'error')
end
end
validate_file方法在什么时候起作用?在CarrierWave将文件放入存储器之后还是之前?
1条答案
按热度按时间pftdvrlh1#
实际上,当您使用Carrierwave上传文件时,有两种方式触发验证-
1.在存储之前-
before :store
-在文件上传之前要做的事情,检查文件类型,更改文件名,检查连接,检查用户是否经过身份验证等1.存储后-
after :store
-一旦文件上传需要做什么-更新表中的上传状态,发送电子邮件,创建后台作业,删除临时文件等你需要注意一件事-什么也不会发生,如果你不添加回调,文件是直接上传没有任何检查或验证。
要查看实际代码,请在carrierwave repo中跳转到callbacks.rb file。