ActiveRecord :: RecordNotFound не вызывается без идентификатора в Rails 3 - PullRequest
0 голосов
/ 15 февраля 2011

В этом сценарии я ищу имя пользователя, получая его через URL-адрес как site.com/john

Возможно, из-за типа запроса, когда URL-адрес имеет несуществующее имя пользователя, Rails не перенастраиваетсяисключение RecordNotFound, поэтому соответствующая страница 404 не отображается.Текущее исправление, которое я сделал, похоже на этот код, но я хотел бы получить исключение из Rails, а не так, которое выглядит очень вонючим.

def show
  @user = User.first(:conditions => ["lower(username) = ?", params[:username].downcase]) 
  if @user 
    ...
  else
    redirect_to '/404.html'
  end
end

Спасибо

1 Ответ

2 голосов
/ 15 февраля 2011

Вы правы, что это тип запроса: .first и другие связанные с ним ярлыки возвращают nil вместо вызова исключения RecordNotFound.Если вы немного измените код и вызовете User.find_by_username! params[:username].downcase, он вернется к повышению исключения для нулевых записей.

См. Возникновение ошибки ActiveRecord для RecordNotFound

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...