2012-07-31 89 views
0

我正在尝试构建Rails 3.2应用程序,并且在做销毁时我只是一个简短的问题。 首先我查找找到我需要删除的用户,但是如果找不到,我不想破坏 。检查是否在销毁之前找到用户对象

这是我的代码,我觉得缺少点什么第3行(如果@user):

@user = User.find(params[:user_id]) 

if @user 
    @user.destroy 
else 
    "User not found" 
end 

回答

2

您的代码将无法正常工作,并会引发异常,你应该做的:

@user = User.find_by_id(params[:user_id]) 

if @user 
    @user.destroy! #methods with bang raise an exception, I advise you to use them 
    #no flash msg? 
else 
    flash[:error] = "User not found" 
end 
0

如果未找到用户,你会得到一个异常

如果你不想要的话,做的事:

@user = User.find_by_id(params[:user_id]) 

那么你的测试是正确的

3

你也可以用try做到这一点:

if User.find_by_id(params[:user_id]).try(:destroy) 
    "User found and destroyed" 
else 
    "User not found or was not successfully destroyed" 
end 
相关问题