1

「foo」と「bar」という 2 つの値の順列を持つことができるハッシュ フィールドがあるとします。ハッシュ値が2つのうちの1つであることを確認するにはどうすればよいですか?

class ValidateMe
  validates :type => { :type => "foo" or :type => "bar" }
end

これにより、エラーが発生します。このユースケースを処理する適切な方法は何ですか?


私の実際のケースは、ペーパークリップを使用して画像を添付しています。画像が .png または .jpg のみであることを強制する必要があります

class ValidateMe
  validates_attachment :image, 
                       presence => true, 
                       :content_type => { :content_type => "image/png" }
end

いずれかのコード ブロックに関するヘルプをいただければ幸いです。ありがとう!

4

3 に答える 3

1

これを行う最善の方法は、型の配列を:content_type

class ValidateMe
  validates_attachment :image, 
                       presence => true, 
                       :content_type => { :content_type => ['image/png', 'image/jpeg'] }
end

(私の答えはPaperclip - Validate File Type but not Presenceのコードに基づいています )

これは、正規表現を使用して行うこともできます。(あまり好ましくない)

class ValidateMe
  validates_attachment :image, 
                       presence => true, 
                       :content_type => { :content_type => /^image\/(jpeg|png)$/ }
end

(ソース画像のみを受け入れるように Paperclip を制限するにはどうすればよいですか? )

于 2013-06-19T17:50:32.167 に答える
1

Btuman の最初の回答は正規のものと見なされると思います。validates_attachment の content_type の content_type キーは、有効な content-type の配列を受け入れることができます。

于 2013-06-19T18:00:33.890 に答える
0

詳細については、 :inclusion 属性を使用できますhttp://guides.rubyonrails.org/active_record_validations_callbacks.htmlを参照してください

于 2013-05-29T23:10:26.993 に答える