在从表单帮助程序构建表单之前,轨道是否接触数据库



通过轨道教程工作,它说

当使用form_for(@user(构造表单时,如果@user.new_record?为真,则Rails使用POST,如果为假,则使用PATCH。

那么当它呈现 html 时,它是否命中数据库,它什么时候确切地这样做?之前有什么?

不,它不会命中数据库,您可以在控制台中自行检查,

old = User.last
new = User.new

只有old命中数据库,而new只是创建类 User 的对象,让我们更进一步。

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

看,没有查询命中数据库,同样,当您将@user对象传递给 form 时,它会检查new_record?但不命中数据库。

那么,它是如何确定这一点的呢?我的疯狂猜测,它检查id/primary_key而不是nil

如果此对象尚未保存,则返回 true,也就是说,数据库中尚不存在该对象的记录;否则返回 false。

参考这里

最新更新