2009-09-21 3 views
1

У меня есть эта модель:Рубин на 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

ответ

7

Если добавить в validates_format_of вы можете поставить регулярное выражение, чтобы проверить связь с.

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

Большое спасибо. – storedope

1

... в: символ связи. Я не могу: link.include? потому что: ссылка является символом.

Просто так ясно, обратите внимание, что :link (как символ) это просто способ передать имя метода link, в этом случае говорить проверки, какие методы он должен работать. Если вы хотите, чтобы значение возвращалось link (что предположительно было бы атрибутом ссылки для объекта), вы бы назвали link обычным методом. Однако для валидации ответ Петра - это то, что вы хотите.

+0

Да, вот почему я сказал, что не могу использовать .include? на символ: это невозможно. Спасибо, что пытались помочь беспомощному noob. – storedope

Смежные вопросы