我有一个链接模型,用于存储指向网络页面的链接。其中一个字段是 url - 在该字段上,我正在尝试执行几个验证,如果它的格式不正确,也将其更改为有效的 URL。
例如 test.com 将更改为http://test.com。我还构建了一个自定义验证器来检查它是否是一个有效的 URL,但顺序都是错误的,所以在我有机会添加 http 位之前它就会启动。但是,如果该字段为空白,则 http 如果启动太快而不是告诉用户他们需要输入内容。
目前我的验证器看起来像:
before_validation :add_http
validates :url, :presence => true, :allow_nil => false, :allow_blank => false, :url => true
我确信有更好的方法来实现这一点。我认为理想的流程应该是:
- 检查该字段是否存在,空白或无
- 检查它是否是一个有效的 URL
- 如果 URL 缺失,请将 http:// 添加到 URL 的开头
- 再次检查它现在是否是有效的 url(根据步骤 2 和 3 的时间,不确定此步骤是否必要)