Mysql2::Erreur: entrée Double de la clé ActiveRecord::RecordNotUnique pas attraper d'erreur?
Je suis en train de travailler sur une application rails, et ont été l'erreur suivante se produit très souvent:
Mysql2::Error: Duplicate entry '3022093-2000000028003-visited' for key 'unique_user_place_relationship'
Alors que j'ai trouvé la source du problème vers le bas pour les lignes suivantes:
begin
up = UserPlace.new(user_place_params)
up.skip_logging
up.save!
rescue ActiveRecord::RecordNotUnique => e
Rails.logger.warn(e)
end
Dans ma table, j'ai les indices suivants:
key_name seq_in_index column_name
unique_user_place_relationship 1 user_id
unique_user_place_relationship 2 place_id
unique_user_place_relationship 3 relationship
Le problème est que je n'ai pas de validate_uniqueness_of
user_id, place_id et de la relation dans mon user_place.rb
?
À partir de ma compréhension, ActiveRecord:RecordNotUnique
devrait rattraper cette erreur, puisque l'opération ne respecte pas l'indice de contraintes au niveau de db.
Oui, vous devriez avoir le
validates_uniqueness_of
en place en plus la base de données des contraintes de niveau.OriginalL'auteur Huy | 2013-03-06
Vous devez vous connecter pour publier un commentaire.
La doc dit:
OriginalL'auteur Pioz
Pas très bien quel est le problème avec l'ajout de
validates_uniqueness_of
mais si vous ne voulez vraiment pas à l'utiliser et vous dites que lerescue
n'est pas la capture de l'exception, essayez de supprimerActiveRecord::RecordNotUnique => e
tous ensemble et voir si il intercepte l'exception dans ce cas.Essayer quelque chose comme ce qui suit:
OriginalL'auteur Maher Manoubi