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])