2011-12-05 32 views
0

我的要求: 添加驗證,以確保SITEMAP_URL關鍵字總是包含在search_engines.url,它應該是格式的http://www.example.com/驗證用正則表達式格式Ruby on Rails的

class SearchEngine < ActiveRecord::Base 

    validates :name, :ping_url, :uniqueness => true, :presence => true 
    validates :ping_url, :format => {:with => /\=SITEMAP_URL$/}, :presence => true 

end 

是驗證我寫的是正確的。

回答

2

驗證看起來很好。

除了如果你期望/\=SITEMAP_URL$/插值它不會。

它只會匹配字符串;

  • 「http://some.com?q=SITEMAP_URL」

真的是你是什麼意思?

如果你有

SITEMAP_URL = "/sitemap.xml" 

那麼你可以說

SITEMAP_REGEXP = /\=#{SITEMAP_URL}/ 

但是,這將解釋 「」作爲任何角色。

所以你需要使用Regexp.escape

差不多

Regexp.new(Regexp.escape("=#{SITEMAP_URL}")+"$") 

應該做你想要什麼。