Ruby on rails 触发器ActiveRecord::RecordNotFound而不是返回nil

Ruby on rails 触发器ActiveRecord::RecordNotFound而不是返回nil,ruby-on-rails,Ruby On Rails,使用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]

使用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
#routes.rb
资源:用户
匹配'u/:login'=>'用户#显示',:as=>:主用户
#用户\u controller.rb
类UsersControllerparams[:login])。首先
结束
结束
通常,如果我们使用
@user=user.find(params[:id])
,它将返回
ActiveRecord::RecordNotFound
,然后重定向到
500
404
(不确定将重定向到哪个,但这并不重要)


但是在上面的例子中,它只返回
@user=nil
并继续呈现
show
操作。我如何才能以类似于搜索
id
的方式对其进行编码?

您可以使用
。首先
在找不到记录的情况下引发
ActiveRecord::RecordNotFound
错误

@user = User.where(:login => params[:login]).first!

您可以先使用
在找不到记录的情况下引发
ActiveRecord::RecordNotFound
错误

@user = User.where(:login => params[:login]).first!

真棒的回答!谢谢真棒的回答!谢谢