【问题标题】:Ruby validation - multiple permutations for a single hashRuby 验证 - 单个哈希的多个排列
【发布时间】:2013-05-29 22:58:12
【问题描述】:

假设有一个哈希字段可以有两种可能的值排列,“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

非常感谢您对任一代码块的帮助。谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby validation paperclip paperclip-validation


    【解决方案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
    

    (来源How can I restrict Paperclip to only accept images?

    【讨论】:

      【解决方案2】:

      我认为 Btuman 的第一个答案会被认为是规范的:validates_attachment 中 content_type 的 content_type 键可以接受一组有效的内容类型。

      【讨论】:

      • 总是有不止一种方法可以做到这一点。也许规范并不完全正确。这只是我个人经常看到的风格,而且我认为有更好的记录。此外,我会避免那里的正则表达式,因为我认为它不必要地复杂。
      • 啊,真的,我只是想包括不止一种方式以防万一,但我会编辑答案以确保添加你的观点
      【解决方案3】:

      您可以使用 :inclusion 属性了解更多信息,请参阅此http://guides.rubyonrails.org/active_record_validations_callbacks.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 2015-01-20
        • 2017-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多