Rails找到了ActiveRecord :: RecordNotFound

时间:2012-03-14 20:21:02

标签: ruby-on-rails

我有一张包含"属于"的表格。在模型中。 该表包含用于链接两个表的xx_id字段。

但是,有时xx_id将是空白的。 如果是,我得到ActiveRecord :: RecordNotFound。 我不想要错误 - 我只想在这个字段中显示空白。

你有什么建议?

4 个答案:

答案 0 :(得分:73)

当您使用find方法时,Rails将始终引发 ActiveRecord :: RecordNotFound 异常。但是,find_by_*方法在未找到记录时返回nil

ActiveRecord documentation告诉我们:

  

RecordNotFound - 没有记录响应find方法。要么是   具有给定ID的行不存在或行不符合   额外的限制。有些查找调用不会引发此异常   发现没有任何信号,请查看其文档   进一步的细节。

如果您想在找不到记录时返回nil,只需按如下方式处理异常:

begin
  my_record = Record.find params[:id]
rescue ActiveRecord::RecordNotFound => e
  my_record = nil
end

答案 1 :(得分:7)

你不能写

my_record = Record.find(params[:id) rescue nil

答案 2 :(得分:2)

Record.find_by(id: params[:id])

如果找到它,则返回Record个对象,如果没有,则返回nil。

答案 3 :(得分:1)

当您调用find时,您将获得一个数组。 当数组不包含对象时,count为零。

items = Store.find(:all, :conditions => {:resource_id => item.id})
if item.count == 0 puts " !not found for item id#{item.id}"

if item.nil? puts " !not found for item id#{item.id}"
相关问题