Rails 查找方法挂了

Rails find method hanging

rails 的新手,有点困惑。

我有以下情况:

if Agency.find(params[:agency]).id
  @parent = Agency.find(params[:agency]).id
end

它挂在第一行,returns 错误,"Couldn't find Agency without an ID"..这是我的开头...

如果它找不到该机构,那么它不应该做任何事情(至少那是我的意图)。否则设置@parent实例。

检查它是否可以找到它(代理)的正确语法是什么?

编辑:

搜索文档我意识到了这一点,

"The find method will raise an ActiveRecord::RecordNotFound exception unless a matching record is found for all of the supplied primary keys."

澄清一下,find 方法需要将 id 作为参数。如果您的 Agency 模型中有一个名为 agency 的列,您可以使用 find_by,例如。 Agency.find_by(agency: params[:agency]).id

多亏了文档和@aruprakshit,我才意识到为什么我一开始没有正确检查它。

文档状态,"The find method will raise an ActiveRecord::RecordNotFound exception unless a matching record is found for all of the supplied primary keys." http://guides.rubyonrails.org/active_record_querying.html

我没有尝试按照建议查看 params[:agency] 是否真的存在。将我的代码调整为以下内容后:

if Agency.exists?(params[:agency])
  @parent = Agency.find(params[:agency]).id
end

它就像一个魅力。

如果代理记录存在,如果您只想设置 @parent 变量,请先使用 exists?

检查其是否存在
if Agency.exists?(params[:agency])
  @parent = Agency.find(params[:agency]).id
end