假设有一个哈希字段可以有两个可能的值排列,“foo”和“bar”。如何验证哈希值是两者之一?
class ValidateMe
validates :type => { :type => "foo" or :type => "bar" }
end
这会导致错误。处理此用例的正确方法是什么?
我的实际案例是使用Paperclip附加图像。我需要强制执行图片只有.png或.jpg
class ValidateMe
validates_attachment :image,
presence => true,
:content_type => { :content_type => "image/png" }
end
非常感谢任何代码块的帮助。谢谢!
答案 0 :(得分: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
答案 1 :(得分:1)
我认为Btuman的第一个答案将被认为是规范的:validates_attachment中content_type的content_type键可以接受一组有效的内容类型。
答案 2 :(得分:0)
您可以使用:includes属性获取更多信息,请参阅此http://guides.rubyonrails.org/active_record_validations_callbacks.html