Извинения, но я немного застрял в том, что, по моему мнению, является простым решением. Я создаю приложение 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 %>
Первая мысль. Вы уверены, что это '== 'Tom'', а не выражение' user.try' в выражении if? Если вы отделите их (возможно, с помощью инструкций вложенности if), вы сможете сузить проблему. – GSP
Просто попробовал комментировать команду user.try и не повезло. Источником проблемы, насколько я могу судить, является «==» Tom »' – jfalkson
В этом случае вы можете поделиться соответствующим представлением? –