Ruby on Rails符号验证

时间:2009-09-21 22:51:55

标签: ruby-on-rails validation

我有这个型号:

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

对表单进行验证的地方。但我还要验证字符串“http”是否包含在:link符号中。我不能这样做: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 %>

2 个答案:

答案 0 :(得分:7)

如果您添加validates_format_of,则可以提供正则表达式来测试链接。

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

答案 1 :(得分:1)

  

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

就是这么清楚,请注意:link(作为符号)只是传递link方法的名称的一种方法,在这种情况下告诉验证应该采用哪些方法。如果您想要link返回的值(可能是对象的链接属性),您可以将link称为常规方法。但是,对于验证,彼得的答案就是你想要的。