In meinem Controller-Controller habe ich Date.new
verwenden, um ein Datum Objekt zu erstellen, um in meinem ActiveRecord übergeben werden.raise ActiveRecord :: RecordNotFound (oder irgendeinen 404-Status) für ungültiges Datum
end_range = Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i).end_of_day.to_formatted_s(:db)
Das Problem dabei ist, dass oben, wenn ein Benutzer versucht, die Parameter in der URL für den Tag 40
param als Eingabe manuell solche zu ändern, die Date.new
ausfällt (wie erwartet). Allerdings hätte ich lieber keinen 500er Fehler, wenn ein Benutzer so etwas eintippte, sondern stattdessen einen 404 Fehler (weil man mit einem Tag 40
nie wirklich einen Datensatz erreichen kann).
Ich habe versucht, verschiedene conditionals (if
und unless
Aussagen) zu raise ActiveRecord::RecordNotFound
wenn das nicht funktioniert, aber es gibt die 500-Fehler vor der bedingten läuft (und daher nie eine 404 zurückkehrt).
Kennt jemand einen besseren Weg, um das zu handhaben, oder eine Möglichkeit, die Date.new
mehr würde fehlschlagen, so dass die bedingte Anweisung ausgeführt werden kann?
Danke, das funktioniert. Das zweite Beispiel funktioniert gut, das war, was ich wollte, aber ich begann nur durch ein ActiveRecord NotFound zu versuchen, nur etwas anderes als 500 zu bekommen. (Wenn jemand liest, ist ActiveRecord im ersten Beispiel falsch eingegeben.) –
Fixed der Tippfehler. Froh, dass das für dich funktioniert hat. – tadman