2013-12-24 31 views
0

道歉,但我一直堅持我認爲是一個簡單的修復。我正在構建一個rails應用程序,並且只是想測試當前登錄到我的應用程序的用戶是否具有名稱'Tom'。我有一個名爲Tom的用戶,當我與他一起登錄時,我被重定向到new_thing_url,表明會話名稱不是Tom。Rails活動記錄查詢(測試用戶登錄到給定的會話)

我已經試過user.name =「湯姆」以及和它似乎沒有工作。

而且,我使用Bcrypt認證

我在sessions_controller.rb

  def create 
     user=User.find_by(name: session[:name]) 
     if session[:name] == 'Tom' and user.try(:authenticate,(params[:password])) 
     session[:user_id] = user.id 
     session[:name] = user.name 
     redirect_to admin_url 
     else if user and user.authenticate(params[:password]) 
     redirect_to new_thing_url 
     else 
     redirect_to login_url, alert: "Invalid user/password combo" 
     end 
     end 

     end 


\ 

<% if flash[:alert] %> 

<p id="notice"><%= flash[:alert] %></p> 
<% end %> 
<%= form_tag do %> 
<fieldset> 
<legend>Please Log In</legend> <div> 
<%= label_tag :name, 'Name:' %> 
     <%= text_field_tag :name, params[:name] %> 
</div> 
     <div> 
     <%= label_tag :password, 'Password:' %> 
     <%= password_field_tag :password, params[:password] %> 
</div> <div> 
<%= submit_tag "Login" %> </div> 
</fieldset> 
<% end %> 
+0

首先想到的。你確定它是'=='Tom''而不是'if'語句中的'user.try'子句嗎?如果你分開這些(可能通過嵌套if語句),你可能能夠縮小問題的範圍。 – GSP

+0

只是試圖註釋掉user.try子句,並沒有運氣。問題的來源,據我所知是'==「湯姆」' – jfalkson

+0

在這種情況下,你可以分享相關的視圖? –

回答

0

創建會話方法在這一點上:

user=User.find_by(name: session[:name]) 
if session[:name] == 'Tom' and user.try(:authenticate,(params[:password])) 

您沒有設置session[:name]呢。你可能想:

user=User.find_by(name: params[:name]) 
if params[:name] == 'Tom' and user.try(:authenticate,(params[:password])) 
+0

完美,非常感謝你的工作,像一個聊天! – jfalkson