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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

Q&A

解決済

ruby on railsの名前とパスワードでのログインについて

nijima
carp

総合スコア27

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

3回答

0グッド

0クリップ

1630閲覧

投稿2021/07/15 10:54

ruby on rails でユーザー名とパスワードでログインをできるようにしたいです。
ユーザー名とパスワードを入力してログインを押しても、何も反応がありません。

発生している問題・エラーメッセージ

ターミナルでは
Unpermitted parameter: :name
というエラーが出ています。

該当のソースコード

app/views/devise/sessions/new.html.erb <h2>Log in</h2> <%= form_with model: @user, url: user_session_path, local: true do |f| %> <div class="field"> <%= f.label :name %><br /> <%= f.text_field :name, autofocus: true, autocomplete: "name" %> </div> <div class="field"> <%= f.label :password %><br /> <%= f.password_field :password, autocomplete: "current-password" %> </div> <% if devise_mapping.rememberable? %> <div class="field"> <%= f.check_box :remember_me %> <%= f.label :remember_me %> </div> <% end %> <div class="actions"> <%= f.submit "Log in" %> </div> <% end %> <%= render "devise/shared/links" %>
app/models/user.rb class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable end
db/migrate/202107150070646_devise_create_users.rb # frozen_string_literal: true class DeviseCreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| ## Database authenticatable t.string :email, 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.string :name t.timestamps null: false end 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
config/initializers/devise.rb --省略 # config.authentication_keys = [:name] --省略

試したこと

補足情報(FW/ツールのバージョンなど)

プログラミング初めて1週間の初心者で、エラーの原因が全く分かりません。
何卒、ご指導お願いいたします。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

makox0105

2021/07/15 11:16

メールアドレスではログインできたのでしょうか?
nijima

2021/07/15 11:21

メールアドレスではログインできております。

回答3

1

ベストアンサー

ふと思ったのですが、deviseのviewが編集状態になっていなくて、emailがnameに変更できてないのではないでしょうか?

config/initializers/devise.rb

Ruby

1# config.scoped_views = false 23config.scoped_views = true

rails severは再起動してください。

投稿2021/07/17 09:39

makox0105

総合スコア65

carp👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

nijima

2021/07/18 00:34

ご回答ありがとうございます! ご指導いただいたところを変更したところ、無事名前でログインできました!!

0

違うかもしれませんが、

application_controller.rb

Ruby

1protected 2 def configure_permitted_parameters 3 devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) 4 devise_parameter_sanitizer.permit(:account_update, keys: [:name]) 5 end

投稿2021/07/15 15:19

makox0105

総合スコア65

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

nijima

2021/07/16 01:30

やはりログインしようとすると、 Unpermitted parameter: :name というメッセージが出ました。
makox0105

2021/07/16 01:39

devise_parameter_sanitizer.permit(:sign_in, keys: [:name])かも
nijima

2021/07/16 02:46

Unpermitted parameter: :nameというエラーは消えました! しかし、ログインを押しても画面は変化しません。 試しにemailでログインしてみたところ、ログイン画面へ移動しました。
makox0105

2021/07/16 03:11

initializers/devise.rbの[:email]を全部[:name]に変更しましたか?
makox0105

2021/07/16 03:13

違いました、このふたつコメントアウトしてますか? # config.case_insensitive_keys = [:email] # config.strip_whitespace_keys = [:email]
nijima

2021/07/16 03:14

いえ、 # config.authentication_keys = [:email] のみを # config.authentication_keys = [:name] に変更しました。
makox0105

2021/07/16 03:17

あ!あと # config.authentication_keys = [:name] 頭の#取ってくださいね。
nijima

2021/07/16 03:19

コメントアウトしてませんでした。コメントアウトしてログインを試してみたところ、反応ありませんでした。
makox0105

2021/07/16 03:34

コメントアウト # config.case_insensitive_keys = [:email] # config.strip_whitespace_keys = [:email] コメントイン config.authentication_keys = [:name] で合ってますか?
nijima

2021/07/16 03:36

はい!
makox0105

2021/07/16 03:52

controllerって何か書かれてます?
nijima

2021/07/16 05:17

ログインに関しては、ここ以外何も書いてないです。 app/controllers/application_controller class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) devise_parameter_sanitizer.permit(:sign_in, keys: [:name]) end end
nijima

2021/07/16 05:18

すいません!コピー間違えていたので貼りなおります。 class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) devise_parameter_sanitizer.permit(:sign_in, keys: [:name]) end end
makox0105

2021/07/16 13:48

時間作れたら再現するか試してみたいです。 何かわかったらご連絡します。
makox0105

2021/07/16 15:11

と思ったけど、自分のプログラムnameは日本語で名前入ってる。 日本語でもログインできるのかしら?(笑)
nijima

2021/07/17 00:34

ありがとうございます! ユーザー名は日本語で新規登録できました。

0

投稿2021/07/15 11:26

makox0105

総合スコア65

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

nijima

2021/07/15 11:39

この記事を参考にログイン機能をつくったのですが、Unpermitted parameters: :nameというエラーが出ます。
makox0105

2021/07/15 12:10

schema.rbを見せてくれませんか?
nijima

2021/07/15 13:30

返信遅れてしまい大変申し訳ございません。schema.rbはこのようになっております。 # This file is auto-generated from the current state of the database. Instead # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. # # Note that this schema.rb definition is the authoritative source for your # database schema. If you need to create the application database on another # system, you should be using db:schema:load, not running all the migrations # from scratch. The latter is a flawed and unsustainable approach (the more migrations # you'll amass, the slower it'll run and the greater likelihood for issues). # # It's strongly recommended that you check this file into your version control system. ActiveRecord::Schema.define(version: 2021_07_15_111310) do create_table "post_images", force: :cascade do |t| t.text "body" t.string "image_id" t.text "title" t.text "opinion" t.integer "user_id" t.datetime "created_at", null: false t.datetime "updated_at", null: false end create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.string "name" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["email"], name: "index_users_on_email", unique: true t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end end

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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