我想根据用户提交来自表的一些数据。
它的工作正常,但如果我在字段中发布任何内容并发布我的表单,它将返回我的例外。
有没有办法可以处理nil异常,还是需要更改查询?
question_options = question.question_options.where(id: self.option_id).first
答案 0 :(得分:1)
最简单的解决方案是使用try
。例如:
question_options = question.question_options.where(id: self.option_id).try(:first)
try
的文档是here
答案 1 :(得分:1)
对于您的问题,存在多种解决方案。您的查询返回nil
,这没关系,因为找不到任何内容。最简单的解决方案是if
语句。 if question_options.nil?
做其他事情。或者您可以使用单元化对象(或NullObject)使用它question_option = question.question_options.where(id: self.option_id).first || QuestionOption.new
其他可能性也是如此。这取决于您的要求您选择的方式。