在我的数据库中的rails中,有一个名为ME@gmail.com的用户,但是如果我尝试使用me@gmail.com登录的话。我做不到。很明显,在我的字段尝试登录之前,它不会变得更低。我知道我应该..。
before_save { |user| user.email = email.downcase }
但据我所知在模型中是这样的。但我只有一个会话控制器。不是会话模型。那么,我应该如何达到同样的效果呢?
我当前的用户模型
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :name
attr_accessor :password
before_save :encrypt_password
before_save { |user| user.email = email.downcase }
before_save { |user| user.name = name.downcase }
before_create { generate_token(:auth_token) }
before_create { generate_token(:email_token) }我当前的会话控制器
class SessionsController < ApplicationController
def new
end
def create
user = User.authenticate(params[:email], params[:password])
if user
if user.email_activation_token == true
if params[:remember_me]
cookies.permanent[:auth_token] = user.auth_token
else
cookies[:auth_token] = user.auth_token
end
redirect_to root_url, :notice => "Logged in!"
else
flash.now.alert = "You email has not yet been verified. Please click the link in your email."
render "new"
end
else
flash.now.alert = "Invalid email or password"
render "new"
end
end问题中的表单字段
= form_tag sessions_path do
%p
= label_tag :email
= text_field_tag :email, params[:email]
%p
= label_tag :password
= password_field_tag :password
%p.button
%input{name: "commit", type: "submit", value: "Log in"}发布于 2013-05-20 17:29:52
user = User.authenticate(params[:email].downcase, params[:password])或
在方法authenticate中,如下所示:
User.where("LOWER(email) = LOWER(?)", email).firsthttps://stackoverflow.com/questions/16654766
复制相似问题