2017-06-14 1 views
1

Arbeiten durch das Tutorial Schienen und es sagtBerührt Rails die Datenbank vor dem Erstellen eines Formulars aus Form Helper?

Wenn eine Form der Konstruktion form_for (@user) verwenden, Rails verwendet POST wenn @ user.new_record? ist wahr und PATCH wenn es falsch ist.

Also, wenn es das HTML rendert, trifft es die Datenbank und wann tut es das genau? Was kommt vorher?

+0

In Anbetracht der Tatsache, dass [* new_record? *] (Https://apidock.com/rails/ActiveRecord/Base/new_record%3F) ist eine Methode * AR * so * prüft Existenz eines aufnehmen *, ich glaube, es wird die DB treffen. – Pavan

Antwort

1

Nein, ist es nicht die Datenbank getroffen, können Sie selbst überprüfen in der Konsole

old = User.last 
new = User.new 

Nur die old Hits der Datenbank, während new schafft nur das Objekt der Klasse User, gehen wir weiter ..

old.new_record? 
#=> false 
new.new_record? 
#=> true 

See, wird keine Abfrage an die Datenbank getroffen, ähnlich, wenn Sie das @user Objekt zu bilden passieren, überprüft es für new_record? aber ohne den db zu schlagen.

Also, wie bestimmt es das? Meine wilde Vermutung, überprüft es für id/primary_key nicht nil

+0

@SergioTulentsev möchte meine * wilde Vermutung * kommentieren? :) –

1

Gibt true zurück, wenn das Objekt noch nicht gespeichert worden ist - das heißt, ein Datensatz für das Objekt existiert nicht in der Datenbank noch; Andernfalls wird false zurückgegeben.

Refer Here

+1

also, was folgst du daraus? –

+0

@Md. Farhan Memon Es ist das gleiche wie deine Antwort, aber das ist die Erklärung, die auf der Ruby API geschrieben ist. –

Verwandte Themen