Rails 3.2中的自定义URL验证方法

时间:2012-09-04 04:10:17

标签: ruby-on-rails ruby-on-rails-3 uri ruby-on-rails-3.2

我怎样才能让它发挥作用?使用!! URI.parse(url)或self.url?

class Idea < ActiveRecord::Base
  attr_accessible :body, :url
  validates :body, presence: true, :length => { :in => 6..240 }
  validates :body, uniqueness: true
  validates :url, presence: true
  validate :good_url
  require 'uri'
  def good_url
    errors.add(:url, 'not valid') unless URI.parse(url)
  end
end

1 个答案:

答案 0 :(得分:1)

如果你只是想让它运转起来,那么怎么样:

errors.add(:url, 'not valid') if (url =~ URI::regexp).nil?

但是如果解析url对你很重要,你可能想要考虑替换ruby的标准URI实现,例如addressable,它处理UTF-8字符,规范化和其他可能很重要的边缘情况,具体取决于背景。

另见:check if url is valid ruby