2009-09-21 125 views
1

我有这样的模式:Ruby on Rails的符号验证

class Story < ActiveRecord::Base 
    validates_presence_of :name , :link 
end 

凡表单验证发生。但是我还想验证:链接符号中是否包含字符串“http”。我不能这样做:link.include?因为:链接是符号。我怎么做?

我的看法是这样的:

<% form_for :story do |f| %> 
<p> 
    name:<br /> 
    <%=f.text_field :name %> 
</p> 
<p> 
    link:<br /> 
    <%= f.text_field :link %> 
</p> 
<p> 
    <%= submit_tag :"submit this story" %> 
</p> 
<% end %> 
+0

“所以我有这个控制器”应该是“所以我有这个模型”;-) – SingleShot 2009-09-21 23:04:03

回答

7

如果您在validates_format_of添加你可以提供一个正则表达式来测试该链接。

class Story < ActiveRecord::Base 
    validates_presence_of :name , :link 
    validates_format_of :link, :with => /^http.*$/ 
end 
+0

非常感谢你的朋友。 – storedope 2009-09-22 23:03:10

1

...在:链接符号。我不能这样做:link.include?因为:链接是符号。

正是这样很明显,注意:link(作为标志)仅仅是一个的方式来传递的link方法,在这种情况下,告诉哪些方法它应该工作的有效性。如果你想通过link返回值(这可能是对象的链接属性),你可以调用link作为常规方法。然而,对于验证,彼得的答案是你想要的。

+0

是的,这就是为什么我说我不能使用.include?在:符号上,这是不可能的。谢谢你试图帮助无助的noob。 – storedope 2009-09-22 23:04:45