UrlValidator

作者: 云莉6 | 来源:发表于2020-09-18 16:08 被阅读0次

验证是否是合法的 url,自己网上找了一些例子,后来发现我们正在使用的 gem doorkeeper 源码中就有可以参考的部分。以此也让我想到,之后可以参考一些优秀源码怎么写,也省的自己重造轮子或者能写的更加规范

https://doorkeeper.gitbook.io/guides/

参考 doorkeeper 源码 app/validators/redirect_uri_validator.rb
最终实现:

# 在 model 中调用
validates :redirect_uri, url: true

# 自定义 validator
class UrlValidator < ActiveModel::EachValidator
  def self.compliant?(value)
    uri = URI.parse(value) && uri.host
  rescue URI::InvalidURIError
    false
  end

  def validate_each(record, attribute, value)
    if value.blank? || !self.class.compliant?(value)
       record.errors.add(attribute, (options[:message] || I18n.t("errors.messages.is_not_a_url")))
    end
  end
end

相关文章

  • UrlValidator

    验证是否是合法的 url,自己网上找了一些例子,后来发现我们正在使用的 gem doorkeeper 源码中就有可...

网友评论

    本文标题:UrlValidator

    本文链接:https://www.haomeiwen.com/subject/deljyktx.html