1

假设有一个哈希字段可以有两种可能的值排列,“foo”和“bar”。如何验证哈希值是两者之一?

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

(来源我怎样才能限制回形针只接受图像?

于 2013-06-19T17:50:32.167 回答
1

我认为 Btuman 的第一个答案将被认为是规范的: validates_attachment 中 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 回答