2013-02-17 167 views
0

我正在尋找一種方法來驗證字段中是否存在導軌模型中的正確URL或IP地址。我玩過validates :url, :format => URI::regexp(%w(http https)),以及其他URL驗證。但是,如何通過URL或IP地址驗證字段?也許這是一個寶石。Rails 3驗證URL或IP地址

thx!

+0

所以有效的字段可以是'http:// host.tld'以及'127.0.0.1'?確切地說, – dimuch 2013-02-17 14:42:44

+0

,這兩種方法都應該是可能的。 – 23tux 2013-02-17 14:51:20

回答

1

不知道是否有這樣的寶石,但自定義驗證可以實現相對簡單(與Gemfile中的ipaddress寶石)。嘗試類似

require 'uri' 
validate :valid_url_or_ip 
... 
private 
def valid_url_or_ip 
    unless valid_url?(url) || IPAddress.valid?(url) 
    errors.add(:url, "Not an URL or IP address") 
    end 
end 

def valid_url? 
    uri = URI.parse(url) 
    uri.kind_of?(URI::HTTP) || uri.kind_of?(URI::HTTPS) 
rescue URI::InvalidURIError 
    false 
end 
+0

謝謝,那確實很簡單;) – 23tux 2013-02-17 15:37:11