Techioz Blog

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 ファイルにアクセスしてください。