2024.09.10(更新日: 2024.11.17)
会員登録機能を作成した

はじめに
railsで会員登録機能を実装するには、「Devise」を使用するということは知っている。
【Rails】deviseの導入手順 #Ruby – Qiitaを参考にして、ローカルのオリジナルアプリケーションに会員登録機能を実装していく。
Gemファイルに追記

74行目に追記した。

deviseの設定ファイルを作成する

コマンドを実行したらエラーが出た。bundle installをしていないのが原因か。

bundle installをしてみる。

無事に、deviseがインストールできたみたいだ。

先ほどのコマンドを打ってみると、上手く行った。

モデルを作成する

上手く行った。

マイグレーションする

マイグレーションファイルの内容をデータベースに反映させる。

マイグレーションの内容は、コメントアウトを除くと以下のようになっていた。
class DeviseCreateUsers < ActiveRecord::Migration[7.0]
def change
create_table :users do |t|
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
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
usersテーブルを作成して、一意制約のかかったemailカラムとreset_password_tokenカラムを追加している。

追加されたテーブルとカラムを確認してみる
usersテーブルの中身を確認することができた。

詳細は、PostgreSQLデータベースに接続して、テーブルの中身を確認する方法に書いた。
新規登録画面を確認してみる

http://localhost:3000/users/sign_upで、新規登録画面にアクセスすることができた。

ビューを作成する

いろんなビューファイルが作成できた。

会員登録してみる
情報を入力して、Sign upを押す。

トップページにリダイレクトした。

内部の処理を見ていこう。以下のように内蔵サーバーのログが残されていた。

重要な部分は、POSTで情報を受け取って、データベースにその情報を登録している部分。
Started POST "/users" for ::1 at 2024-09-10 08:27:43 +0900
Processing by Devise::RegistrationsController#create as TURBO_STREAM
Parameters: {"authenticity_token"=>"[FILTERED]", "user"=>{"email"=>"hiroki.hiroki@icloud.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
内部の処理は、deviseがやってくれているだろう。
投稿ID : 24771
コメントを残す