Rails モデルで正しい URL または IP アドレスのフィールドを検証する方法を探しています。validates :url, :format => URI::regexp(%w(http https))
、およびその他の URL 検証で少し遊んでみました。しかし、URL または IP アドレスでフィールドを検証するにはどうすればよいでしょうか? 多分それのための宝石があります。
どうも!
Rails モデルで正しい URL または IP アドレスのフィールドを検証する方法を探しています。validates :url, :format => URI::regexp(%w(http https))
、およびその他の URL 検証で少し遊んでみました。しかし、URL または IP アドレスでフィールドを検証するにはどうすればよいでしょうか? 多分それのための宝石があります。
どうも!
そのような宝石があるかどうかはわかりませんが、カスタム検証は比較的簡単に実装できます ( ipaddress
Gemfile の宝石を使用)。次のようなものを試してください
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