Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails在从form helper构建表单之前是否接触数据库?_Ruby On Rails_Railstutorial.org - Fatal编程技术网

Ruby on rails rails在从form helper构建表单之前是否接触数据库?

Ruby on rails rails在从form helper构建表单之前是否接触数据库?,ruby-on-rails,railstutorial.org,Ruby On Rails,Railstutorial.org,学习rails教程,它说 在为(@user)使用form_构建表单时,Rails使用POST if@user.new_记录?为true,如果为false,则进行修补 那么,当它呈现html时,它会撞击数据库吗?它到底是什么时候撞击数据库的?之前会发生什么?不,它不会命中数据库,您可以在控制台中自行检查 old = User.last new = User.new 只有old命中数据库,而new只创建类User的对象,让我们更进一步 old.new_record? #=> false ne

学习rails教程,它说

在为(@user)使用form_构建表单时,Rails使用POST if@user.new_记录?为true,如果为false,则进行修补


那么,当它呈现html时,它会撞击数据库吗?它到底是什么时候撞击数据库的?之前会发生什么?

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

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

old.new_record?
#=> false
new.new_record?
#=> true
请参见,没有查询命中数据库,类似地,当您将
@user
对象传递到表单时,它会检查
新记录?
,但不会命中数据库


那么,它如何确定这一点呢?我的猜测是,如果这个对象还没有保存,它会检查
id
/
主键
而不是
nil
返回true,也就是说,数据库中还没有该对象的记录;否则,返回false


考虑到AR方法检查记录是否存在的事实,我相信它会击中DB。@SergioTulentsev想对我的猜测发表评论吗?:)那么,你从中得出了什么结论?@Md.Farhan Memon这与你的答案相同,但这是写在Ruby API上的解释。