【问题标题】:How to validate the format of a website url如何验证网站网址的格式
【发布时间】:2013-10-11 08:13:22
【问题描述】:

我知道这已被问过几次,但我仍然无法让它工作。

在我的模型中

class User < ActiveRecord::Base
  require 'uri'
  attr_accessible :website
  validates :website, presence: true
end

我要做的就是检查它是否是一个有效的格式化网址。

当我在控制台中输入下面的代码行时,它们都返回 true

!!URI.parse('www.fake.com')

!!URI.parse('fake')

如何将 Simone 的答案 (A good way to validate urls) 合并到我的模型中以验证网址的格式?

def valid?(uri)
  !!URI.parse(uri)
rescue URI::InvalidURIError
  false
end

【问题讨论】:

    标签: ruby-on-rails ruby validation uri


    【解决方案1】:
    class User < ActiveRecord::Base
      require 'uri'
      attr_accessible :website
      validates :website, presence: true
      validate :website_url_format_valid?
    
      private
    
      def website_url_format_valid?
         uri = URI.parse(url)
         uri.kind_of?(URI::HTTP)
       rescue URI::InvalidURIError
          false
        end
    end
    

    【讨论】:

    • 这就是我尝试过的。我唯一的改变是 uri = URI.parse(self.website)。我做了一个 uri 的 put 并得到了 www.address.com ,我又做了一个 uri.kind_of?(URI::HTTP) 的 puts 并得到了错误。有什么想法吗?
    • 在控制台中我运行 uri = URI.parse('www.google.com') 并得到 => #<:generic:0x007fb7ce982ca8 url:www.google.com> 然后我运行 uri .kind_of?(URI::HTTP) 和 get => false
    • kind_of 子句试图确保您输入 google.com 而不仅仅是 www.google.com
    • 我需要接受 www 以及许多其他类型的网站地址。我该如何解决这个问题?
    猜你喜欢
    • 2017-01-06
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多