Ruby on rails RubyonRails';查找';以及它的返回值
这应该是一个简单的问题,但我找不到关于它的任何信息,所以我只是把我的问题扔了出去:Ruby on rails RubyonRails';查找';以及它的返回值,ruby-on-rails,find,Ruby On Rails,Find,这应该是一个简单的问题,但我找不到关于它的任何信息,所以我只是把我的问题扔了出去: thing_i_use = Thing.find(params[:id]) 目前,如果params[:id]没有任何内容,则网站默认为具有堆栈跟踪等功能的开发页面,声称id=etc没有任何内容 我想知道的是,如果params[:id]不存在,或者对象本身不存在,那么如何对它进行测试,以使我使用的东西为零。基本上,在代码后面的逻辑中使用不存在的对象。thing\u i\u use=thing.find(param
thing_i_use = Thing.find(params[:id])
目前,如果params[:id]没有任何内容,则网站默认为具有堆栈跟踪等功能的开发页面,声称id=etc没有任何内容
我想知道的是,如果params[:id]不存在,或者对象本身不存在,那么如何对它进行测试,以使我使用的东西为零。基本上,在代码后面的逻辑中使用不存在的对象。thing\u i\u use=thing.find(params[:id])rescue nil替换:
thing_i_use = Thing.find(params[:id])
与:
如果id
不存在或nil
,则最新版本不会出现任何错误
我使用的东西只会是nil
,这将是唯一要做的测试。如果你想返回nil
,如果ID不存在的对象,你可以使用:
thing = Thing.find_by_id(params[:id])
如果您想测试它是否存在(并得到true/false):
1) rescue nil
是众所周知的反模式之一2)rescue
在性能上的成本就像一个符咒。谢谢你幽默了我的新脾气。现在,我们来弄清楚剩下的部分。
thing = Thing.find_by_id(params[:id])
Thing.exists?(params[:id])