完成rails教程并说明
使用form_for(@user)构建表单时,如果@ user.new_record,Rails使用POST?如果是假的话,则为true和PATCH。
因此,当它呈现html时它会访问数据库,它什么时候会这样做呢?之前发生了什么?
答案 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。