前提・実現したいこと
Ruby on railsで「devise」を使ってログイン機能を実装したいです。
発生している問題
正しいuser_idとpasswordを入力しているがログインに失敗する。
エラーメッセージ(自分で設定したフラッシュ)
ログイン失敗
該当のソースコード
20200526004246_devise_create_users.rb
class DeviseCreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t| t.string :name t.string :user_id t.integer :level t.string :mailmagazin t.boolean :delete t.string :email t.string :encrypted_password t.string :reset_password_token t.datetime :reset_password_sent_at t.datetime :remember_created_at t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true end end
routes.rb
Rails.application.routes.draw do devise_for :users get '/' => 'home#top' devise_scope :user do get 'login' => 'users/sessions#new' post 'login' => 'users/sessions#create' delete 'logout' => 'devise/sessions#destroy' get 'sinki' => 'users/registrations#new' post 'sinkitouroku' => 'users/registrations#create' get 'signup/cancel' => 'devise_invitable/registrations#cancel' get 'user' => 'devise_invitable/registrations#edit' patch 'user' => 'devise_invitable/registrations#update' put 'user' => 'devise_invitable/registrations#update' delete 'user' => 'devise_invitable/registrations#destroy' get 'password' => 'devise/passwords#new' post 'password' => 'devise/passwords#create' get 'password/edit' => 'devise/passwords#edit' patch 'password' => 'devise/passwords#update' put 'password' => 'devise/passwords#update' end get 'you' => 'home#you' post 'seikou' => 'home#seikou' get 'kensaku' => 'video#kensaku' get 'post' => 'post#new' post 'arigatou' => 'post#create' get 'index' => 'video#index' get 'ionamata' => 'video#toukou' post 'yosi!' => 'video#create' get 'riyoukiyaku' => 'video#riyoukiyaku' post 'kekka' => 'video#kekka' get 'kesu' => 'home#kesu' get 'kesu/taikai' => 'home#destroy' resources :show do member do get 'star' end end post 'hosi' => 'video#hosi' resources :show do member do get 'komento' end end get '/:id' => 'video#show' end
app/views/session/new.html.erb
<p>ログイン用ページ</p> <p>ログインしていないと使用できない機能もあります。</p> <%= form_for :session,:url => {controller: "session", action: "create" } do |f| %> <p>ユーザーIDを記入</p> <%= f.text_field :user_id %> <p>パスワードを記入</p> <%= f.password_field :password %> <%= f.submit "ログイン!" %> <% end %>
app/controllers/users/session_controller.rb
# frozen_string_literal: true class Users::SessionsController < Devise::SessionsController # before_action :configure_sign_in_params, only: [:create] # GET /resource/sign_in def new # super end # POST /resource/sign_in def create # super user = User.find_by(user_id: params[:user_id]) if user && user.authenticate(params[:password]) session[:user_id] = user.user_id flash[:notice] = "ログイン成功" redirect_to("/") else flash[:alert] = "ログイン失敗" render action: :new end end # DELETE /resource/sign_out # def destroy # super # end # protected # If you have extra params to permit, append them to the sanitizer. # def configure_sign_in_params # devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute]) # end end
補足情報
Windows 10 home 64ビット
ruby 2.6.6
Ruby on rails 6.0.3.1
PostgreSQL 13beta1
テキストエディタ Atom
失礼な点があるかもしれませんがどうぞ宜しくおねがい致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。