2016-12-18 53 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)