-1

皆さん、ルビーでの例外処理に問題があります。私のステートメントが機能しない理由がわかりません。

エラー: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])

セッション[:user_id]をログに記録し、SQLを使用してDBを調べてみてください。

別の注意点として、あなたは使用することができます

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 に答える