检查Rails控制器中是否存在记录

时间:2013-09-13 13:05:28

标签: ruby-on-rails ruby-on-rails-3

我想检查设置表中是否存在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!是什么让我错了?

3 个答案:

答案 0 :(得分:6)

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

if Setting.exists?(2)

答案 1 :(得分:1)

如果找不到记录,

#find将抛出异常。

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

if Setting.where( id: 2 ).any?

答案 2 :(得分:0)

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