ログインが成功する前に、user
のstate
という属性のチェックをしようとしています(名前&が合格)。 sessions_controler
ユーザモデルRuby on Rails - ログイン前にユーザを確認してください
class User < ApplicationRecord
has_secure_password
end
移行
class CreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
t.string :name
t.string :email
t.string :password_digest
t.integer :type
t.integer :state
t.timestamps
end
end
end
セッションを使用してマイsession_controller
アクションを作成する(状態= 0:非アクティブ/ 1:アクティブ)
def create
user = User.find_by name: params[:session][:name].downcase
if user && user.authenticate(params[:session][:password]) && user.state == 1
flash[:success] = "Login successed"
log_in user
redirect_to user
else
flash[:danger] = "Login failed"
render :new
end
end
レールルート
get 'login' => 'sessions#new'
post "login" => "sessions#create"
user.state == 1
の結果はsession_controller
で、常にfalse
です。私はチェックのために私が使用したユーザがデータベースにstate 1
を持っていると確信しています。
ありがとうございました
同じ名前のユーザーがいないことは確かですか? – s3tjan
'User.where(name:params [:session] [:name] .downcase).count'をチェックしてください。 1より大きい場合は、コントローラロジックを修正してください。 –