我有一点问题:
我的模型中有这个:
validates :title, :presence => true, :uniqueness => true, :format => /[A-Z][A-Za-z0-9\-_]*/i
这在我的控制器中:
def create
@page = Page.new params[:page]
if verify_recaptcha(:model => @page) && @page.save
redirect_to @page
else
render :action => :new
end
end
然而,某人创建了a page with a + in its title。怎么会发生这种情况? RegEx错了吗?我找不到问题。
答案 0 :(得分:2)
尝试在正则表达式中放置开始和结束匹配器:
/^[A-Z][A-Za-z0-9\-_]*$/
否则,如果+位于开头或结尾,它仍会匹配。
答案 1 :(得分:0)
Nick几乎没有,而不是将:format传递给validates_presence_of,你需要添加另一个验证器:
validates_format_of :title, :with => /[A-Z][A-Za-z0-9\-_]*/i
另外,我会缩短那个正则表达式:
/[A-Z][\w\-_]*/i
您可以使用http://rubular.com检查您的正则表达式是否为您提供了预期的结果。