2016-12-18 5 views
0

Ich weiß, dass die korrekte Syntax für @pin in create Methode istWie lautet die korrekte Syntax für @pin in der neuen Methode?

@pin = current_user.pins.build(pin_params), aber ich bin einfach nicht 100% sicher ist, welche Syntax in new Methode zu verwenden, da es nur für die Initialisierung ist.

ist es?

def new 
    @pin = Pin.new 
end 

oder ist es?

def new 
    @pin = current_user.pins.build 
end 
+0

Ich glaube, es ist ein Fehler in Ihrem Code. Es sollte '@pin = current_user.pins.create (pin_params)' –

+0

Nein sein. Es sollte '.build' sein – boholdyjeramae

+0

Build erstellt keinen Datensatz in einer Datenbank –

Antwort

1

die zweite verwenden, weil es die user_id gesetzt wird automatisch

0

Es hängt davon ab, ob Sie @pin.user Variablen in Ihrer Form verwenden oder nicht?

Wahrscheinlich können Sie in Ihrem Formular @pin.user.name verwenden. Das häufig falsche Muster erstellt hidden_field für user_id Spalte, weil es nicht gesichert ist.

+0

Meinten Sie Ansichten, wenn Sie die Form erwähnen? – boholdyjeramae

+0

Ja, 'Form' in einer Ansicht für' neue' Aktion. –

+0

Ich verstehe einfach nicht, was du meinst. – boholdyjeramae

0

Beide sind in Ordnung zu verwenden. Es gibt keine Best Practice (zumindest kenne ich nicht) dafür. Es ist eher eine Frage der Präferenz. Ich würde die frühere Variante wählen, da es einfacher ist, für mich zu lesen.

Beachten Sie jedoch, dass das Ergebnis von zwei Zeilen unterschiedlich ist. Die zweite Zeile ist equvalient an:

Pin.new(user: current_user)

Verwandte Themen