【发布时间】:2013-06-09 15:50:21
【问题描述】:
我正在尝试为我的 rails 应用程序设置一个简单的身份验证。我有一个 security_users 脚手架并创建了一些用户。
当我尝试使用其中一些帐户登录时,“find_by_*”方法似乎无法检测到当前帐户。
这就是我的会话控制器的样子(我已经注释了密码检查的目的,以便调试问题):
class SessionsController < ApplicationController
def new
end
def create
@security_user = SecurityUser.find_by_email(params[:email])
if @security_user #&& @security_user.authenticate(params[:password])
session[:security_user_id] = @security_user.id
redirect_to root_url, notice: "Logged in!"
else
flash.now.alert = "Email or password is invalid"
render 'new'
end
end
def destroy
session[:user_id] = nil
redirect_to root_url, notice: "Logged out!"
end
end
因此,当我尝试创建会话(登录)时,我被重定向到会话“新”模板。这是调试信息:
这似乎没问题。为什么下面的语句找不到记录:
SecurityUser.find_by_email(params[:email])
编辑:
当我在控制台中输入上面的行时,它正在返回记录:
【问题讨论】:
-
你遇到了什么错误?
-
@Rinku 我没有收到任何错误 - 助手 (find_by_email) 无法找到用户,因此无法创建会话。
-
你用 Rails 控制台检查过吗?你能到那里吗?
-
@Rinku 是的,我已经更新了问题 - 该方法在那里有效。
-
您是否正确收到了参数中的电子邮件?您检查过吗?
标签: ruby-on-rails-3 authentication helper findby