rails 在从表单助手构建表单之前是否接触数据库?

Does rails touch the database before building a form from form helper?

完成 rails 教程,上面写着

When constructing a form using form_for(@user), Rails uses POST if @user.new_record? is true and PATCH if it is false.

因此,当它呈现 html 时,它会访问数据库吗?它究竟是什么时候这样做的?前面是什么?

不是,它没有命中数据库,你可以在控制台中自己检查,

old = User.last
new = User.new

只有old访问数据库,而new只是创建class的对象User,让我们更进一步..

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

看,没有查询到数据库,类似地,当您将 @user 对象传递给表单时,它会检查 new_record? 但没有访问数据库。

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

Returns 如果此对象尚未保存,则为真 - 也就是说,数据库中尚不存在该对象的记录;否则,returns 错误。

Refer Here