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

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

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

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

Q&A

解決済

1回答

2360閲覧

deviseのsign_inができない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

0グッド

1クリップ

投稿2019/11/30 13:02

編集2019/12/01 08:45

deviseを利用してログイン機能を作成しています。
名前とパスワード(再入力なし)でログインできるようにしたいのですが、ログインせず同じページ(ログイン画面)に移動してしまいます。
ターミナルを確認するとログイン機能が正常に動いていないように思えるのですが、解決ができませんでした。

以下ターミナルの文章になります。

Started POST "/users/sign_in" for 153.229.14.214 at 2019-11-30 12:34:09 +0000 Cannot render console from 153.229.14.214! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by Devise::SessionsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"18cq1gPtB2XbEAuEJq5ExY1avQK/AsM4v0MFSeayvjRr82PJhgqdYHSqV8DvoGCZzfOK2NzSaxBXqjfOJRhfuQ==", "user"=>{"name"=>"ユーザー", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"} User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? AND "users"."password" = ? ORDER BY "users"."id" ASC LIMIT ? [["name", "ユーザー"], ["password", "パスワード"], ["LIMIT", 1]] Completed 401 Unauthorized in 5ms (ActiveRecord: 0.2ms) Processing by Devise::SessionsController#new as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"18cq1gPtB2XbEAuEJq5ExY1avQK/AsM4v0MFSeayvjRr82PJhgqdYHSqV8DvoGCZzfOK2NzSaxBXqjfOJRhfuQ==", "user"=>{"name"=>"ユーザー", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"} Rendering devise/sessions/new.html.erb within layouts/application Rendered shared/_header.html.erb (0.9ms) Rendered devise/shared/_links.html.erb (0.8ms) Rendered shared/_footer.html.erb (0.2ms) Rendered devise/sessions/new.html.erb within layouts/application (6.3ms) Completed 200 OK in 196ms (Views: 45.4ms | ActiveRecord: 0.0ms)

また、sign_up→ユーザーページ移動後までの文章は以下のようになっています。
sign_upは、名前、メールアドレス、パスワードで行えるようにしています。

Started POST "/users" for 153.229.14.214 at 2019-11-30 12:29:32 +0000 Cannot render console from 153.229.14.214! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations" Processing by Devise::RegistrationsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"1LloI5oUhLvjqp0ZC92ZFkU7lwE24U0XZ1Ep3Kt0CHkIpa5wO3H/kcwUkEOLy78V13XGG8OPcqhjIQsf+Q1Jrg==", "user"=>{"name"=>"ユーザー", "email"=>"メールアドレス@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"} (0.1ms) begin transaction User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "メールアドレス@gmail.com"], ["LIMIT", 1]] SQL (0.7ms) INSERT INTO "users" ("name", "email", "encrypted_password", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?) [["name", "ユーザー"], ["email", "メールアドレス@gmail.com"], ["encrypted_password", "$2a$11$.dGSv3iaZKCo/WJwJOBoGejJk4D4xdCOCmrCn12fPq3OE4KzBvpE2"], ["created_at", "2019-11-30 12:29:33.240667"], ["updated_at", "2019-11-30 12:29:33.240667"]] (6.5ms) commit transaction (0.0ms) begin transaction SQL (0.5ms) UPDATE "users" SET "sign_in_count" = ?, "current_sign_in_at" = ?, "last_sign_in_at" = ?, "current_sign_in_ip" = ?, "last_sign_in_ip" = ?, "updated_at" = ? WHERE "users"."id" = ? [["sign_in_count", 1], ["current_sign_in_at", "2019-11-30 12:29:33.267769"], ["last_sign_in_at", "2019-11-30 12:29:33.267769"], ["current_sign_in_ip", "153.229.14.214"], ["last_sign_in_ip", "153.229.14.214"], ["updated_at", "2019-11-30 12:29:33.270255"], ["id", 2]] (6.4ms) commit transaction Redirected to https://1fbad43c2e0b482da0849126108a8212.vfs.cloud9.ap-southeast-1.amazonaws.com/users/2 Completed 302 Found in 273ms (ActiveRecord: 15.0ms) Started GET "/users/2" for 153.229.14.214 at 2019-11-30 12:29:33 +0000 Cannot render console from 153.229.14.214! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by UsersController#show as HTML Parameters: {"id"=>"2"} User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1]] User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] Rendering users/show.html.erb within layouts/application Rendered shared/_header.html.erb (1.0ms) Book Load (0.2ms) SELECT "books".* FROM "books" WHERE "books"."user_id" = ? [["user_id", 2]] Rendered shared/_footer.html.erb (0.3ms) Rendered users/show.html.erb within layouts/application (412.0ms) Completed 200 OK in 575ms (Views: 537.1ms | ActiveRecord: 0.9ms)

・Completed 401 Unauthorized in 5ms (ActiveRecord: 0.2ms)
・Completed 200 OK in 196ms (Views: 45.4ms | ActiveRecord: 0.0ms)
・Completed 302 Found in 273ms (ActiveRecord: 15.0ms)
・Completed 200 OK in 575ms (Views: 537.1ms | ActiveRecord: 0.9ms)
この文がヒントになると思うのですが、どうでしょうか?

以下コード一覧です。

20191008135158_devise_create_users.rb # frozen_string_literal: true class DeviseCreateUsers < ActiveRecord::Migration[5.0] def change create_table :users do |t| ## Database authenticatable t.string :name, null: false, default: "" t.string :email, null: false, default: "" t.string :password, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable t.integer :sign_in_count, default: 0, null: false t.datetime :current_sign_in_at t.datetime :last_sign_in_at t.string :current_sign_in_ip t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.timestamps null: false t.string :name t.string :introduction t.string :profile_image_id en # add_index :users, :username, unique: true add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end
user.rb class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:name, :password] has_many :books, dependent: :destroy attachment :profile_image end
application_controller.rb class ApplicationController < ActionController::Base protect_from_forgery with: :exception before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:email, :password, :remember_me) } devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password) } end protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :email, :password, :password_confirmation, :remember_me]) added_attrs = [:name, :email, :password, :password_confirmation, :remember_me] devise_parameter_sanitizer.permit :sign_up, keys: added_attrs devise_parameter_sanitizer.permit :account_update, keys: added_attrs devise_parameter_sanitizer.permit :sign_in, keys: added_attrs end before_action :authenticate_user! def after_sign_up_path_for(resource) user_path(current_user) end def after_sign_in_path_for(resource) user_path(current_user) end end
routes.rb Rails.application.routes.draw do devise_for :users get root 'top#top' get '/home/about', to: 'top#home' resources :users resources :books # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end

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

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

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

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

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

guest

回答1

0

ベストアンサー

名前でログインするときの設定が間違っていたようでした。

以下を修正・追加

routes.rb devise_for :users, controllers: { sessions: 'users/sessions', registrations: 'users/registrations' }
controllers/users/registrations_controller.rb class Users::RegistrationsController < Devise::RegistrationsController before_action :authenticate_user! protected def after_sign_up_path_for(resource) user_path(current_user) end
controllers/users/sessions_controller.rb class Users::SessionsController < Devise::SessionsController before_action :authenticate_user! protected def after_sign_in_path_for(resource) user_path(current_user) end
config/initializers/devise.rb # config.authentication_keys = [:email] config.case_insensitive_keys = [:email] config.strip_whitespace_keys = [:email] ↓書き換える config.authentication_keys = [:name] config.case_insensitive_keys = [:name] config.strip_whitespace_keys = [:name]

以下を削除

application_controller.rb before_action :authenticate_user! def after_sign_up_path_for(resource) user_path(current_user) end def after_sign_in_path_for(resource) user_path(current_user) end
user.rb :authentication_keys => [:name, :password]

投稿2019/12/02 08:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問