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

时间:2017-06-14 05:33:26

标签: ruby-on-rails railstutorial.org

完成rails教程并说明

  

使用form_for(@user)构建表单时,如果@ user.new_record,Rails使用POST?如果是假的话,则为true和PATCH。

因此,当它呈现html时它会访问数据库,它什么时候会这样做呢?之前发生了什么?

2 个答案:

答案 0 :(得分:1)

不,它没有打到数据库,你可以在控制台中查看,

old = User.last
new = User.new

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

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

请参阅,不会对数据库进行任何查询,类似地,当您将@user对象传递给表单时,它会检查new_record?但不会访问数据库。

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

答案 1 :(得分:1)

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

Refer Here