在会话控制器中,我尝试用 .where(email: params[:email]) 替换“.find_by_email(params[:email])”,并使用 Rails 内置的 has_secure_password 验证密码,但未成功。虽然前者有效,但后者导致捕获的异常:
undefined method `authenticate' for #<ActiveRecord::Relation:0x0000010384e690>
这是控制器中不起作用的完整代码:
类 SessionsController < ApplicationController def new end
def create
user = User.where(email: params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to texts_path, notice: "Logged in!"
else
render "new"
end
end
结尾