Carrierwave と Fog を使用して S3 にファイルを保存するとき、モデル内で検証はどの時点でトリガーされますか?
概要
キャリアウェーブアップローダーを備えた ActiveRecode モデルがあります。次の質問に興味があります。検証はどの時点で行われますか? Carrierwave アップローダーでストア メソッドがトリガーされる前ですか、それとも後ですか?
私のモデルの例は次のとおりです。
class File < ApplicationRecord
mount_uploader :document, FileUploader
validate :validate_file
private
def validate_file
errors.add(:document, 'error')
end
end
validate_file メソッドはどの時点で機能しますか? CarrierWave がファイルをストレージに置いた後、またはその前?
解決策
実際には、Carrierwave を使用してファイルをアップロードするときに検証がトリガーされる方法は 2 つあります。
1 つ注意する必要があります。コールバックを追加しない場合は何も起こりません。ファイルはチェックや検証なしで直接アップロードされます。
実際のコードを確認するには、carrierwave リポジトリにあるこの callbacks.rb ファイルにアクセスしてください。