質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

527閲覧

railsでログイン機能がうまく動きません

退会済みユーザー

退会済みユーザー

総合スコア0

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

0クリップ

投稿2020/05/28 07:47

前提・実現したいこと

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

失礼な点があるかもしれませんがどうぞ宜しくおねがい致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

encrypted_passwordをpasswordに変えたら「NoMethodError in Users::SessionsController#create
undefined method `authenticate!' for nil:NilClass」というエラーが発生するようになったので質問の問題は解決したので解決済みとしておきます。

投稿2020/05/29 01:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問