对rails很新,有点困惑。
我有以下条件:
if Agency.find(params[:agency]).id
@parent = Agency.find(params[:agency]).id
end
它挂在第一行并返回错误,“无法找到没有ID的代理商” ..这是我的开始......
如果它找不到代理商那么它就不应该做任何事情(至少这是我的意图)。否则设置@parent实例。
检查是否可以找到它(代理商)的正确语法是什么?
修改
搜索文档我意识到了这一点,
“除非找到所有提供的主键的匹配记录,否则find方法将引发ActiveRecord :: RecordNotFound异常。”
答案 0 :(得分:1)
如果您只想在代理商记录存在时设置@parent
变量,请先使用exists?
if Agency.exists?(params[:agency])
@parent = Agency.find(params[:agency]).id
end
答案 1 :(得分:0)
为了澄清,find方法需要id作为参数。如果您在代理商模型中有一个名为agency的列,则可以使用find_by,例如。 Agency.find_by(agency: params[:agency]).id
答案 2 :(得分:0)
感谢文档和@aruprakshit,我意识到为什么我没有正确地检查这一点。
docs state,"除非找到所有提供的主键的匹配记录,否则find方法将引发ActiveRecord :: RecordNotFound异常。" {{3 }}
我没有按照建议查看params[:agency]
是否真的存在。将我的代码调整为以下内容后:
if Agency.exists?(params[:agency])
@parent = Agency.find(params[:agency]).id
end
它就像一个魅力。