0

使用 Rails 3.2。我正在为用户 URL 实现虚 url:

# routes.rb
resources :users
match 'u/:login' => 'users#show', :as => :main_user

# users_controller.rb
class UsersController < ApplicationController
  def show
    @user = User.where(:login => params[:login]).first
  end
end

通常,如果我们使用@user = User.find(params[:id]),它会返回ActiveRecord::RecordNotFound,然后重定向到500or 404(不确定会重定向到哪一个,但这并不重要)。

但在上述情况下,它只会返回@user = nil并继续渲染show动作。如何以与搜索相同的方式对其进行编码id

4

1 回答 1

3

如果找不到记录,您可以使用.first! (Docs)引发错误。ActiveRecord::RecordNotFound

@user = User.where(:login => params[:login]).first!
于 2013-04-07T16:10:46.767 回答