Rails 3 bis 4 Migration Eindeutigkeit Validierungsprobleme

8

Kontext

Wir migrieren von Rails 3.2.12 nach 4.0.2 und Ruby 1.9.3 nach 2.1.8.

Wir haben eine große Testabdeckung, um die Migration in Form von RSpec durchzuführen.

Problem

Eine der Spezifikationen, die überprüft, ob eine Eindeutigkeitsprüfung für ein Kartenmodell fehlschlägt.

%Vor%

Wo ein program_member möglicherweise nur eine mobile: true Karte hat.

Die Spezifikation erstellt 2 Karten für das Mitglied, verwandelt eins in eine mobile Karte und erwartet dann die Bestätigung der Bestätigung mit der zweiten Karte.

%Vor%

Erwartung:

%Vor%

Wenn ich in unseren Zweig master gehe, wird diese Spezifikation übergeben.

Der einzige Faktor, der sich von dieser Spezifikation zu einem Fehler geändert hat, ist die Migration von Rails 3 nach 4.

Ich habe versucht, den Spec-Code in der Konsole auszuführen, nur um zu sehen, dass das Mitglied zwei mobile Karten hat und% card.valid? gibt für beide Instanzen true zurück.

Frage

Hat sich in Rails 4 in Bezug auf die Eindeutigkeitsprüfung oder den Lebenszyklus der Validierung etwas geändert?

    
fbelanger 10.02.2017, 20:08
quelle

1 Antwort

1

Okay, ich bin auf etwas.

Ich habe ein Testprojekt mit der gleichen Ruby- und Rails-Version erstellt.

Ссылка

In diesem Projekt würde ich ein User -Modell haben, das eine admin -Spalte als Boolean mit einer ähnlichen Validierung hat.

%Vor%

Ich habe shofa-matchers und rspec verwendet, um das gewünschte Ergebnis zu beschreiben.

%Vor%

Die Spezifikation ist mit der folgenden Ausgabe fehlgeschlagen:

%Vor%

Ich entschied, dass der Code gut war und Rails genau nach 4.1.0 stieß.

Die Spezifikation wurde übergeben!

%Vor%     
fbelanger 19.02.2017, 03:37
quelle