-1

我每个人,我在处理 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

希望您能够帮助我。

亲切地,奥宾

4

3 回答 3

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

结尾

于 2012-03-31T16:44:54.573 回答
0

这不起作用的唯一原因是 ActiveRecord 实际上是在查找一行

User.find(session[:user_id])

尝试记录 session[:user_id] 并使用 SQL 查看数据库。

另一方面,您可以使用

session[:user_id].nil?

代替

session[:user_id] == nil
于 2012-03-31T16:52:14.080 回答
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
于 2012-03-31T18:12:12.703 回答