0

まず、私は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])
4

1 に答える 1