首先,我是 ROR 的新手。
我有一个用户模型:
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation,:gender,:date,:username
has_secure_password
end
和一个SessionsController用于登录/注销会话,使用新、创建和销毁方法:
class SessionsController < ApplicationController
def create
user = User.find_by_username(params[:sessions][:username])
if user && user.authenticate(params[:sessions][:password])
sign_in
else
render sign_in page
end
end
此实现不适用于用户模型的用户名属性。但与电子邮件属性配合使用效果很好。(我可以使用电子邮件登录,但不能使用用户名。)
当我在 Rails 控制台中运行它时,它会同时验证用户名和电子邮件属性,但在本地服务器上它只接受电子邮件属性。
我哪里错了?
此外,我还想要一些允许用户使用用户名或电子邮件签名的东西。我试过这个
class SessionsController < ApplicationController
def create
user = User.find_by_username(params[:sessions][:username]) or User.find_by_email(params[:sessions][:email])
if user && user.authenticate(params[:sessions][:password])