Validiere die Eindeutigkeit der Assoziation

8

Gegeben die folgenden Klassen:

%Vor%

Wie kann ich die vorherige Aussage (im Bild) auf Rails validieren?

Das Hinzufügen der folgenden Validierung für die Anwendung funktioniert nicht beim Aktualisieren:

%Vor%

Wenn Sie versuchen, die Anwendung in ein anderes JobOffer des gleichen Unternehmens zu ändern, wird candidate.companies diese Firma zurückgeben.

Ich habe auch versucht, so etwas auf Anwendung:

%Vor%

Aber es hat auch nicht funktioniert. Irgendwelche Ideen, um dies zu lösen, ohne 10 Zeilen crappy Code verwenden zu müssen?

    
user1163964 22.01.2012, 21:58
quelle

4 Antworten

14

Es gibt wahrscheinlich viele akzeptable Ansätze, um Ihr Problem zu lösen, aber ich denke, unter dem Strich versuchen Sie, eine Eindeutigkeitsbeschränkung für die Tabelle durchzusetzen, die nicht (direkt) alle Attribute aufweist (sowohl company UND %Code%). Ich würde die user info in der Anwendungstabelle ( company , user_id , job_offer_id ) de-normalisieren und sie immer in einem company_id Callback setzen, um die before_save job_offer zu erreichen. Dann sollten Sie in der Lage sein, die Gültigkeitsbereichs-Gültigkeitsprüfung zu verwenden:

%Vor%     
miked 23.01.2012, 14:42
quelle
0

So werde ich die Modelle strukturieren:

%Vor%

Das sollte funktionieren! Übrigens. Ich werde die Anwendung etwas anderes aufrufen, um die Namensverwechslung zu vermeiden (Rails hat bereits application.rb

    
ez. 22.01.2012 22:51
quelle
0

Wie das Bild zeigt, werden ein Kandidat und ein Stellenangebot viele Anwendungen & amp; Ein Kandidat kann sich nur auf ein Jobangebot pro Unternehmen bewerben. Es kann also sinnvoll sein, die Eindeutigkeit eines Kandidaten zu überprüfen, der auf ein Stellenangebot in einer Anwendung ausgerichtet ist.

%Vor%

Dies verhindert, dass eine Anwendung demselben Kandidaten für dasselbe Stellenangebot zugeordnet wird. Der Kandidat kann sich auf andere Stellen bewerben, oder?

Und wie von @ez hervorgehoben, ist das Umbenennen der Anwendung in etwas Besseres besser.

Hoffe, das hilft.

    
prasvin 23.01.2012 06:04
quelle
0

Für jeden, der das heute findet. Die Antwort ist zu überprüfen, wenn es bereits existierende (verhindert mehrere) & amp; Überspringen, wenn die Anwendung selbst wechselt.

%Vor%     
nitsujri 28.06.2015 11:32
quelle