ruby rails模型url验证

时间:2016-02-17 21:38:17

标签: ruby-on-rails validation activerecord

经过一系列的研究和尝试不同的宝石后,我最终滚动了以下内容:

  validates :url,
            presence: true,
            length: { maximum: 245 },
            format: { with: URI.regexp(%w(http https)), message: :bad_url_format }

这正确验证了http://和https://前缀,但它允许任何类型的域扩展,即http://go.forever

这被认为是正常的吗?

2 个答案:

答案 0 :(得分:1)

是的,这对于URL验证来说是正常的。鉴于最近expansion of top-level domains超过一百,以及该列表增长的可能性,尝试并强制执行允许的TLD列表将非常麻烦和脆弱。

答案 1 :(得分:1)

如果你真的想验证域扩展,我会按照这一点做点什么。

使用自定义验证

validate :correct_url_extension

EXTENSIONS = %w(com org gov blah foo blah bar)

def correct_url_extension
  ext = url.split(".")[-1] #extension should always be at the end (parse here)
  return EXTENSIONS.include?(ext) ? true : false
end