2016-12-18 96 views
0

我知道,@pincreate方法正確的語法是新方法中@pin的正確語法是什麼?

@pin = current_user.pins.build(pin_params),但我只是不能100%確定在new方法要使用的語法,因爲它只是初始化。

是嗎?

def new 
    @pin = Pin.new 
end 

還是它?

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

我相信,在你的代碼中的錯誤。它應該是'@pin = current_user.pins.create(pin_params)' –

+0

不是。它應該是'.build' – boholdyjeramae

+0

構建不會在數據庫中創建記錄 –

回答

0

這取決於您是否會在表單中使用@pin.user變量?

也許你可以使用你的表格@pin.user.name。 常見的錯誤模式是爲user_id列創建hidden_field列,因爲它不安全。

+0

當你提及表單時,你的意思是? – boholdyjeramae

+0

是的,'形式'在'新'行動的視圖。 –

+0

我只是不明白你的意思。 – boholdyjeramae

0

兩者都可以使用。沒有最佳做法(至少我不知道)爲此。 這更多的是一個偏好問題。我會選擇以前的變體,因爲它對我來說更容易閱讀

但是請注意,兩行的結果是不同的。 第二行equvalient到:

Pin.new(user: current_user)