RoR:ActiveRecord.friendly.find()导致重定向

时间:2019-03-20 15:06:53

标签: ruby-on-rails activerecord

我支持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方面还很陌生,所以可能我错过了一些显而易见的事情。如果您告诉我方向,将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,如您所说,find如果找不到具有给定ID的记录,则引发ActiveRecord::RecordNotFound,其中find_by仅返回nil找不到给定的属性。

也就是说,我认为您的应用程序中有一个rescue_from或类似的调用,可能是ApplicationController,它在捕获到RecordNotFound时会重定向。