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

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