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

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

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

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

Ruby on Rails 6

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

1回答

441閲覧

Rails has_secure_password パスワードの再設定

Normin

総合スコア15

Ruby

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

Ruby on Rails 6

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2023/02/24 10:09

実現したいこと

has_secure_passwordを用いたUserテーブルのレコードに対しパスワードを変更する。

前提

Ruby on Railsでhas_secure_passwordを使ったアカウントを管理するユーザーテーブルを用いています。

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

has_secure_passwordを用いたUserテーブルのpasswordの変更が後からできません。
createする場合は:password, :password_confirmationを入力するとそれがハッシュ化されてpassword_digestカラムに格納されます。
パスワードを後から変更したい場合、:password, :password_confirmationのカラムがなく、またpassword_digestに直接書き込もうとした場合、ハッシュ化されていないものがそのまま入ってしまいます。ただしくpassword_digestを入力する場合はどのようにすればいいでしょうか??

該当のソースコード

db/schema.rb ActiveRecord::Schema.define(version: 2023_02_20_180422) do create_table "users", id: false, force: :cascade do |t| t.string "uuid", null: false t.string "name", null: false t.string "email", null: false t.string "password_digest", null: false t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false end
models/user.rb class User < ApplicationRecord has_secure_password validates :name, presence: true validates :email, presence: true, uniqueness: true validates :password_digest, presence: true self.primary_key = "uuid" end

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

ruby '2.7.7'
rails 6.0.6

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

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

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

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

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

guest

回答1

0

パスワード変更用のviewを作って、そこに password, :password_confirmation のfieldを作ればよいのです

投稿2023/02/24 13:37

winterboum

総合スコア23322

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

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

Normin

2023/02/24 15:08

def update user = User.find_by(:email “example@mail.com) user[:password] = new_password user[:password_confirmation] = new_password user.save end ではエラーになります。Userテーブルにpassword, password_confirmationのカラム自体は存在していないようです。 user[:password_digest] = hashed_new_password としてhashed_new_passwordをなんらかの方法で取得するもしくは、なんらかの方法でpassword, password _confirmationをhas_secure_passwordのvalidationのなされたUserテーブルのパスワードの変更の仕方が知りたいです。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問