0

我想检查设置表中是否存在 id 为 2 的条目,如果不存在,我希望用户被重定向到 setting_new_path。我的代码如下所示:

 def index
if Setting.find(2).present?
@patients = Patient.all
@patients_drucken = Patient.drucken

@anrede = Setting.find(1).anrede

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @patients }
end
else
  redirect_to new_setting_path
end
end

但不知何故我得到了错误:

Couldn't find Setting with id=2

我不明白为什么这显示为错误!我的意思是在我写的没有定义的情况下,重定向到 new_setting_path!是什么让我错了?

4

3 回答 3

7

使用存在吗?检查记录是否存在:

if Setting.exists?(2)
于 2013-09-13T13:10:23.563 回答
1

#find如果找不到记录,将抛出异常。

您应该使用#whereand#any?代替:

if Setting.where( id: 2 ).any?
于 2013-09-13T13:07:52.327 回答
0

这意味着您在设置表中没有任何 id = 2 的记录。只需检查一次。

于 2013-09-13T13:08:48.950 回答