2017-09-18 3 views
0

Quand j'ajoute à mon fichier de migration, il casse un test rspec:Ajout de l'époque de pauses add_index itérateur

migration:

add_index :SurveyResponses, [:ID, :QuestionID, :AnswerID, :LastEditedTimestamp ], unique: true, name: 'short_sr' 

Test rspec:

5.times do |index| 
    @org.survey_responses << create(:survey_response) 
end 

Lorsque la add_index est commenté cependant, il ne casse pas. Lorsque je suis à l'intérieur d'un levier et que je viens d'entrer @org.survey_responses << create(:survey_response), il ne se casse pas non plus. Il ne casse que lorsque j'utilise l'itérateur 5.times.

Message d'erreur:

ActiveRecord::RecordNotUnique: Mysql2::Error: Duplicate entry '18001-EML_Organization_ProductSurvey-InstitutionProvidesLayPension' for key 'short_sr': UPDATE `SurveyResponses` SET `BlahOID` = 18001, `OrganizationOID` = 18001 WHERE `SurveyResponses`.`ResponseID` = 33014 

Note: J'ai changé les noms, mais ne vous inquiétez pas les

+0

Quelle est l'erreur que vous obtenez? – Mohanraj

+0

Son une erreur d'entrée en double MySQL '' 'ActiveRecord :: RecordNotUnique: mysql2 :: Erreur: entrée en double '18001-EML_Organization_ProductSurvey-InstitutionProvidesLayPension' pour la touche 'short_sr': UPDATE' 'SET SurveyResponses' BlahOID' = 18001,' OrganizationOID' = 18001 OERE 'SurveyResponses'.'ResponseID' = 33014''' Je suppose que je dois séquencer la colonne 'short_sr' comment? – minlingzhao

Répondre

0

Je suppose dans votre usine, vous avez une valeur statique définie pour short_sr, ou il est actuellement généré d'une manière qui permet de créer des doublons.