まず、私はRORの初心者です。
私はUser モデルを持っています:
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation,:gender,:date,:username
has_secure_password
end
new、create、および destroy メソッドを使用したサインイン/サインアウト セッション用の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
この実装は、User モデルのユーザー名属性では機能しません。しかし、電子メール属性でうまく機能します.(電子メールを使用してサインインできますが、ユーザー名ではサインインできません.)
Railsコンソールでこれを実行すると、ユーザー名と電子メール属性の両方を認証しますが、ローカルサーバーでは電子メール属性のみを受け入れます.
どこが間違っているのですか?
また、ユーザーがユーザー名または電子メールを使用して i に署名できるようにすることも望んでいます。私はこれを試しました
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])