Ruby on rails 触发器ActiveRecord::RecordNotFound而不是返回nil
使用Rails 3.2。我正在为用户url实现虚荣url: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]
# 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!
真棒的回答!谢谢真棒的回答!谢谢