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