2013-12-24 7 views
0

Извинения, но я немного застрял в том, что, по моему мнению, является простым решением. Я создаю приложение rails и просто хочу проверить, имеет ли пользователь, который в настоящее время входит в мое приложение, имя «Tom». У меня есть пользователь с именем Tom, и когда я вхожу в систему с ним, я перенаправляюсь на new_thing_url, указывая, что имя сеанса не является Tom.Rails Active Record Query (тестирование пользователя, зарегистрированного в заданном сеансе)

Я пробовал user.name = "Tom", а также, похоже, не работает.

Кроме того, я использую 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'', а не выражение' user.try' в выражении if? Если вы отделите их (возможно, с помощью инструкций вложенности if), вы сможете сузить проблему. – GSP

+0

Просто попробовал комментировать команду user.try и не повезло. Источником проблемы, насколько я могу судить, является «==» Tom »' – 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

 Смежные вопросы

  • Нет связанных вопросов^_^