ruby-on-rails - 如果不存在,请将 https) 添加到 URL?

标签 ruby-on-rails ruby regex validation url

我在我的模型中使用这个正则表达式来验证用户提交的 URL。我不想强制用户输入 http 部分,但如果它不存在,我想自己添加。

validates :url, :format => { :with => /^((http|https):\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(\/.)?$/ix, :message => " is not valid" }

知道我该怎么做吗?我对验证和正则表达式的经验很少..

最佳答案

如果它不存在,使用前置过滤器添加它:

before_validation :smart_add_url_protocol

protected

def smart_add_url_protocol
  unless url[/\Ahttp:\/\//] || url[/\Ahttps:\/\//]
    self.url = "http://#{url}"
  end
end

保留您的验证,这样如果他们打错了,他们可以更正协议(protocol)。

关于ruby-on-rails - 如果不存在,请将 https) 添加到 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908598/

相关文章:

ruby-on-rails - rails_admin gem 中的自定义操作

ruby - 有没有办法在 ruby​​ 中获得一次击键?

javascript - 有人可以帮助用 javascript 解释这个正则表达式吗?

ruby-on-rails - rails : can a model have no attributes?

ruby-on-rails - 选择名称以特定字符串开头的所有 XML 元素?

ruby-on-rails - Sass::SyntaxError undefined variable

ruby-on-rails - 安装 Rails 时出现 "extconf.rb failed"消息

ruby - ScyllaDB 的正确 ruby​​ 驱动程序

Javascript RegEx 没有按预期返回 false

python - 当正则表达式匹配做某事时