我支持RoR上的应用程序。我不理解其中的一部分。 有一个模型:
class Country < ActiveRecord::Base
extend FriendlyId
friendly_id :prefix, :use => [:finders]
...
end
如果我使用数据库中不存在的值调用Country.find(“ value”)或Country.friendly.find(“ value”),则该调用会立即导致HTTP 302。如果我将其更改为Country.find_by(prefix:“ value”),它会按预期工作,除了它为找不到的值返回nil。
文档说.find()应该引发ActiveRecord :: RecordNotFound异常。但这对我而言并没有发生。
我在RoR方面还很陌生,所以可能我错过了一些显而易见的事情。如果您告诉我方向,将不胜感激。
答案 0 :(得分:1)
首先,如您所说,find
如果找不到具有给定ID的记录,则引发ActiveRecord::RecordNotFound
,其中find_by
仅返回nil
找不到给定的属性。
也就是说,我认为您的应用程序中有一个rescue_from
或类似的调用,可能是ApplicationController
,它在捕获到RecordNotFound
时会重定向。