2012-09-13 3 views
1

j'ai écrit la migration suivante:validate_uniqueness_of et index sur MySQL

class AddValidationsToAnimals < ActiveRecord::Migration 
    def change 
    add_index :animals, [:name, :user_id], :unique => true 
    end 
end 

Ok. Puis, dans mon modèle, j'ajoute la validation suivante:

validates_uniqueness_of :name, :scope => :user_id 

Lorsque je tente d'ajouter un registre qui nuira à cette règle, à moins obtenir un joli message dans mon avis, je me suis un RecordNotUnique Exception.

Pourquoi? Comment puis-je résoudre ce problème?

Merci d'avance.


def create 
    @animal = current_user.animals.new(params[:animal]) 
    @animal.valid? 
    respond_to do |format| 
     if @animal.save 
     format.html { redirect_to @animal, notice: 'Animal registrado com sucesso.' } 
     format.json { render json: @animal, status: :created, location: @animal } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @animal.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

Répondre

1

S'il vous plaît code coller votre méthode ici. Est-ce un commun object.save? Essayez d'appeler avant et vérifiez si elle retourne false.

+0

J'ai ajouté la méthode save dans la question. Après avoir ajouté un @ animal.valid? avant de sauvegarder, ça marche. La question qui reste est pourquoi les rails ne le valide pas? – caarlos0