我是大家,我在处理ruby中的异常时遇到了一些问题。我不明白为什么我的陈述不起作用。
错误:找不到ID = 14的用户 我想重定向到登录页面。
def login_required
begin
if session[:user_id] == nil
redirect_to login_path, :notice => "You are not logged"
elsif User.find(session[:user_id])
return nil
end
rescue ActiveRecord::RecordNotFound
redirect_to login_path, :notice => "No user corresponding in database"
end
end
希望你能帮助我。
亲切, Aubin的
答案 0 :(得分:0)
def login_required
begin
if session[:user_id] == nil
redirect_to login_path, :notice => "You are not logged"
elsif User.find_by_id(session[:user_id]).nil?
#rescue ActiveRecord::RecordNotFound (use if u want to use User.find)
redirect_to login_path, :notice => "No user corresponding in database"
return nil
end
end
端
答案 1 :(得分:0)
这不起作用的唯一原因是ActiveRecord实际上找到了一行
User.find(session[:user_id])
尝试记录会话[:user_id]并使用SQL查看数据库。
另一方面,您可以使用
session[:user_id].nil?
而不是
session[:user_id] == nil
答案 2 :(得分:0)
我会按如下方式重写你的方法:
def login_required
return redirect_to(login_path,
:notice => "You are not logged") if session[:user_id].blank?
user = User.find_by_id(session[:user_id])
return user if user.present?
redirect_to login_path, :notice => "No user corresponding in database"
end