HABTM doppelte Datensätze

7

Ich habe 2 Modelle Game & amp; Theme und sie haben eine has_and_belongs_to_many-Zuordnung. Ich habe viele Lösungen versucht, doppelte Datensätze in der Tabelle games_themes zu verhindern, aber keine Lösungen funktionieren. Das Problem ist, games_themes ist eine Tabelle, aber es ist kein Modell, also kann ich keinen Weg finden, Prüfungen effektiv durchzuführen.

Hier ist eine Lösung, die ich versucht habe

%Vor%     
user2158382 20.02.2014, 01:49
quelle

4 Antworten

14

Sie sollten die Validierung auf Datenbankebene verwenden:

%Vor%

HABTM

Dies verhindert, dass Sie doppelte Daten in der Datenbank speichern. Lässt die Last von Rails & amp; stellt sicher, dass Sie nur ein Spiel oder ein Thema haben. Das Problem liegt darin, dass HABTM kein Modell hat. Es gibt keine Validierung, die Sie in Rails durchführen können, was bedeutet, dass Sie es auf db-level

setzen müssen

Wie in den Kommentaren erwähnt, bedeutet dies, dass Sie die Ausnahmen, die von der db ausgelöst werden, wie folgt behandeln müssen:

%Vor%     
Richard Peck 20.02.2014, 10:08
quelle
4

Verwenden:

%Vor%

Wie folgt:

%Vor%     
Richard Jordan 20.02.2014 02:07
quelle
1

Um Validierungen in der Join-Tabelle durchzuführen, sollten Sie stattdessen has_many :through association verwenden. Ссылка

    
Pavel Pachkovsky 20.02.2014 02:06
quelle
0

Das Erstellen eines neuen Model GameTheme zur Validierung ist keine gute Idee. Wir können uns bei der Migration selbst validieren.

Theme Modell:

%Vor%

Spielmodell:

%Vor%

games_themes Migration: Sie können der Join-Tabelle Eindeutigkeit hinzufügen. Sehen Sie sich hier für weitere Details.

%Vor%     
Pravin Mishra 20.02.2014 07:45
quelle