2016-04-07 9 views
0

Ich sah Warnungen in meinem Code, dass Find veraltet ist. Allerdings kann ich nicht nachvollziehen, was ich verwenden sollte, um den Fund zu ersetzen.Was ist der Ersatz für die veraltete Suche (params [: ID])

Zum Beispiel habe ich die folgenden:

private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_search 
     @search = Search.find(params[:id]) 
    end 

Was wäre jetzt die richtige Aussage sein?

+2

Fund nicht veraltet ist, nicht auf diese Weise .... was ist der Fehler? – trh

+0

Ich habe etwas auf Github angeschaut, das sagt, was du sagst. Wenn ich richtig liege 'Beachte, dass find (primary_key), find_by ... und find_by ...! sind nicht veraltet. "würde sagen, dass die Art, wie ich Find verwende, nicht veraltet ist. Ich denke, der Fehler könnte in meiner IDE (Rubymine) sein, wo ich die Warnungen gesehen habe. [link] (https://github.com/rails/activerecord-deprecated_finders) –

+2

Chris, das scheint ein Fehler in aktuellen Rubymine zu sein, siehe [diese Antwort] (http://stackoverflow.com/a/36481621/1544012). – BoraMa

Antwort

2

Ich glaube nicht finden Methode wurde veraltet. Aber ich denke, es wird Fehler bei der Verwendung finden Methode als params [: ID] nicht korrekt halten/bestehenden Datensatz-ID, dann wird es Fehler werfen.

So wäre es besser, zu verwenden, wo Klausel

@search = Search.where(:id => params[:id]).first 
if @search 
    #write the code here 
end 

statt

+2

Ich glaube nicht, dass es ist eine Frage der Sicherheit/Unsicherheit. Manchmal möchten Sie find (id) verwenden, was ActiveRecord :: ReordNotFound erhöht. In anderen Fällen möchten Sie, dass es null zurückgibt, wenn es nichts findet. Beide Wege sind sicher. Sie müssen nur wissen, was jeder tut und richtig damit umgehen. – Reynard

+1

Übrigens, anstatt wo und zuerst zu verwenden, könnte man auch '' 'Search.find_by (id: params [: id])' '' verwenden, das kompakter ist. Einige Style-Guide empfehlen das tatsächlich. – Reynard

+0

ja @Reynard i bedeutet, die Ausnahme wird – Sukanta

Verwandte Themen