我有一张包含"属于"的表格。在模型中。 该表包含用于链接两个表的xx_id字段。
但是,有时xx_id将是空白的。 如果是,我得到ActiveRecord :: RecordNotFound。 我不想要错误 - 我只想在这个字段中显示空白。
你有什么建议?
答案 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}"