3

さて、ペーパークリップが機能しました。組み込みのバリデーターを使用して、ファイルがアップロードされたことを確認しようとしています

  1. 画像です
  2. 大きすぎない

したがって、ドキュメントごとに、モデルにこれがあります。

validates_attachment :avatar,
:content_type => { :content_type => /image/ },
:size => { :in => 0..2.megabytes }

ただし、ビューに表示されるエラーは次の混乱です。

エラーメッセージ

「アバターは2メガバイト未満の画像でなければならない」のように、もう少しシンプルなものにしてほしい

:message => 'something'ただし、渡すとエラーがスローされるため、これを行う場所がわかりませんUnknown validator: 'MessageValidator'

これをきれいにするにはどうすればいいですか?

小さな画像をアップロードするというハッピー パスは問題なく機能することに注意してください。

いくつかのさらなるテストでは、大きすぎる画像 (デスクトップの背景など) や .rb ファイルではないものをアップロードすると、より正常に失敗することが示されていますが、エラー メッセージはまったく表示されません。まだ私が欲しいものではありません。

4

2 に答える 2

9

明らかに、あなたはずっと前にこれを自分で解決しましたが、答えを探している人にとっては、提供された検証内で実際にそれを行う方法があります.

次のように簡単にメッセージを追加します。

validates_attachment :avatar,
:content_type => { :content_type => /image/, :message => "Avatar must be an image" },
:size => { :in => 0..2.megabytes, :message => "Avatar must be less than 2 megabytes in size" }
于 2013-11-06T07:28:46.863 に答える
3

最終的に 2 つのカスタム バリデータを作成しました。これらがペーパークリップ バリデーターと同じことを行うのは事実ですが、失敗するのはもっときれいです。

  def avatar_is_a_image
    if self.avatar?
      if !self.avatar.content_type.match(/image/)
        errors.add(:avatar, "Avatar must be an image")
      end
    end
  end

  def avatar_is_less_than_two_megabytes
    if self.avatar?
      if self.avatar.size > 5.megabytes
        errors.add(:avatar, "Avatar must be less than 5 megabytes in size")
      end
    end
  end
于 2012-05-23T00:42:53.177 に答える