2012-09-07 3 views
0

donc je pense que parce que je suis la fusion d'un ID utilisateur dans la discussion sur créer qui le fait, parce que je suis validais à la fois le contenu de la discussion et le titre ....Rails ne valide pas

Modèle Discussion

class Discussion < ActiveRecord::Base 
    attr_accessible :user_id, :content, :title 

    has_many :discussion_comments, :dependent => :destroy 
    belongs_to :user 

    validate :content, :presence => true, 
        :length => {:minimum => 10, :maximum => 254} 
    validate :title, :presence => true, 
        :length => {:minimum => 10, :maximum => 254} 
end 

Discussion contrôleur

def create 
    @discussion = Discussion.create(params[:discussion].merge(:user_id => current_user.id)) 
    if @discussion.save 
     redirect_to tasks_path, :flash => {:success => 'Created a new discussion'} 
    else 
     redirect_to tasks_path, :flash => {:error => 'Cannot create empty discussions.'} 
    end 
    end 

Toute façons, chaque fois que je et enregistrer un formulaire vide, il me donne le message de succès quand il devrait me donner le message d'erreur.

Formulaire de discussion

<%= form_for @discussion do |f| %> 

    <p><%= f.label :title %> 
    <%= f.text_field :title %></p> 

    <p><%= f.label :content %> 
    <%= f.text_area :content %></p> 

    <p><%= f.submit %></p> 

<% end %> 

Comme dit, je pense qu'il a quelque chose à voir avec le fait que je suis la fusion de l'ID utilisateur à créer, comment jamais la validation doit arrêter l'ensemble processus de création - non?

Répondre

2

Est-ce Rails 3.x? Essayez d'utiliser validates et non validate. Pourrait être juste une faute de frappe simple.

Alors ...

class Discussion < ActiveRecord::Base 
    ... 

    validates :content, :presence => true, 
         :length => {:minimum => 10, :maximum => 254} 
    validates :title, :presence => true, 
        :length => {:minimum => 10, :maximum => 254} 
end 

Ref: http://guides.rubyonrails.org/active_record_validations_callbacks.html#presence

Je lien vers l'presence exemple, mais il devrait être validates quelle que soit les options que vous passez.

+0

oui c'est 3.x merci beaucoup: D – TheWebs