Wie wird der Fehler behandelt, wenn die ID nicht gefunden wird?

8

Was ist der beste Weg, um den Fehler zu behandeln, dann ID nicht gefunden? Ich habe diesen Code in meinem Controller:

%Vor%

Ich habe über so etwas nachgedacht:

%Vor%

Aber ich bekomme immer noch:

  

ActiveRecord :: RecordNotFound in MatchesController # show

     

Konnte findMatch mit 'id' = 2 nicht finden

Warum?

Was ist die richtige Lösung?

    
Jensky 01.09.2015, 09:31
quelle

4 Antworten

21

Retten Sie es im Basis-Controller und lassen Sie Ihren Aktionscode so einfach wie möglich. Du willst nicht in jeder Aktion eine Ausnahme gefunden haben, oder?

%Vor%     
xdazz 01.09.2015, 09:37
quelle
4

Standardmäßig löst die find -Methode eine ActiveRecord::RecordNotFound -Ausnahme aus. Die korrekte Art, einen nicht gefundenen Datensatz zu bearbeiten, ist:

%Vor%

Wenn Sie jedoch einen if / else-Ansatz bevorzugen, können Sie die Methode find_by_id verwenden, die nil:

zurückgibt %Vor%     
Francesco Boffa 01.09.2015 09:37
quelle
1

Sie können die Methode find_by_id verwenden, die anstelle von Ausnahme

null zurückgibt %Vor%     
Faizan 01.09.2015 10:56
quelle
0

Es gibt zwei Ansätze, die fehlen:

Man benutzt ein Null-Objekt (dort hinterlasse ich die Forschung)

Der andere wurde erwähnt, kann aber wiederverwendbarer und auf eine Art und Weise eleganter platziert werden (aber es ist ein bisschen vor dem Action-Code verborgen, weil er es ist arbeitet auf einer etwas höheren Ebene und versteckt Sachen):

%Vor%     
Felix 01.09.2015 12:44
quelle