2012-09-04 50 views
0

我怎樣才能使這個工作?使用!! URI.parse(url)或self.url?Rails 3.2中的自定義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 
+0

這裏是解決同一個問題http://stackoverflow.com/questions/7167895/whats-a-good-way-to-validate-links-urls-in-問題rails-3 –

+0

[更新的UriValidator](http://stackoverflow.com/a/19423623/356895) – JJD

回答

1

如果你只是想獲得它的工作,然後怎麼樣:

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

但是,如果解析URL對你很重要,你可能要考慮到Ruby的標準URI實現替代,如addressable,它處理UTF-8字符,標準化和其他邊緣情況,這些情況可能很重要,具體取決於上下文。

參見本:check if url is valid ruby