2009-09-21 12 views
1

J'ai ce modèle:Ruby on Rails symbole validation

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

Lorsqu'une validation pour un formulaire lieu. Mais je veux aussi valider si la chaîne "http" est incluse dans le: symbole de lien. Je ne peux pas faire: link.include? parce que: le lien est le symbole. Comment je fais ça?

My View est la suivante:

<% 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

"J'ai donc ce contrôleur" devrait être "Alors j'ai ce modèle" ;-) – SingleShot

Répondre

7

Si vous ajoutez dans un validates_format_of vous pouvez fournir un regex pour tester le lien avec.

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

Merci beaucoup. – storedope

1

... dans le: symbole de lien. Je ne peux pas faire: link.include? parce que: le lien est le symbole.

Pour que ce soit clair, notez que :link (comme un symbole) est juste un moyen de transmettre le nom de la méthode link, dans ce cas, dire la validation des méthodes qui devrait travailler. Si vous souhaitez obtenir la valeur renvoyée par link (qui serait vraisemblablement l'attribut de lien de l'objet), vous appellerez link comme méthode normale. Pour les validations, cependant, la réponse de Peter est ce que vous voulez.

+0

Oui, c'est pourquoi j'ai dit que je ne peux pas utiliser .include? sur un: symbole, ce n'est pas possible. Merci d'essayer d'aider le noob sans défense. – storedope