Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Ruby

【Ruby on Rails】簡単なメモアプリの作成|ユーザー認証と併せてユーザー機能を実装

Ruby on Rails ユーザー機能

動画で解説を見る



開発環境

  • Ruby:version 3.1.2
  • Ruby on Rails:version 7.0.4
  • Visual Studio Code:version 1.73.0
  • OS:Windows10

Ruby on Railsでユーザー機能の実装手順

Ruby on Railsではユーザー認証と併せてユーザー機能を実装することにより、ユーザーフレンドリーなWebサービスを提供しやすくなります。

今回はメモアプリの作成で使用したgemのdeviseなしで自作したログイン機能を用いた「ユーザー機能」のコードを用いて解説していきます。

ユーザー機能のユーザーモデルの作成

まずはログイン機能で使用するユーザーモデルを作成します。

次にユーザーモデルのマイグレーションファイルに必要な「名前、メールアドレス、パスワード」のカラムを追加していきます。

上記の記述が完了したら、以下のコマンドを叩いてマイグレーションファイルを反映させます。

ユーザーモデルのカラムにそれぞれバリデーションを設定していきます。

今回は簡易的になりますが、パスワードのカラムに正規表現を使用して半角英数字(英字は大文字も許可)にしています。

ユーザー機能のルーティングの作成

次にユーザー機能のルーティングを作成していきます。

今回はshowやeditのアクションでは、URLに:idを含めないようにするため、resourceとしているのがポイントです。

ユーザー機能のコントローラーの作成

次にユーザー機能のコントローラーを作成していきます。

コントローラーの作成が完了しましたら、それぞれのアクションに必要な処理を記述していきます。

特にユーザー機能ではストロングパラメーターの仕組みを利用するのが推奨されています。

そのため、ユーザー情報のパラメーターを取得する取得するメソッドをユーザーコントローラー内のprivate内にuser_paramsというメソッド名で作成しています。

また、ユーザー登録と同時にsessionメソッドでユーザーのクッキーにユーザーIDを渡すことにより、ユーザー登録と同時にログイン状態にすることができます。

ユーザー機能のユーザー登録画面の作成

次にユーザー機能のユーザー登録画面の作成をしています。

ユーザー登録機能に必要なユーザー名、メールアドレス、パスワードを登録するフォームを作成しています。

ユーザー機能のユーザー詳細画面の作成

次にユーザー機能のユーザー詳細画面の作成をしています。

ユーザー情報を表示する場合、パスワードなどの機密情報の取り扱いには注意する必要があります。

そのため、ユーザー詳細ページではパスワードは表示しないようにしています。

ユーザー機能のユーザー編集画面の作成

次にユーザー機能のユーザー編集画面の作成をしています。

ユーザー情報を編集する場合、同じようにパスワードなどの機密情報の取り扱いには注意する必要があります。

もし、パスワードを変更する場合の機能を実装したい場合は、様々なWebアプリケーションと同様に処理を分けてあげたほうが良いかと思います。

ユーザー機能への導線の作成

次にユーザー機能への導線を作成しています。

もしユーザーがログイン状態であれば登録情報画面へのリンク、ログアウト状態であれば新規登録画面へのリンクを追加しています。

ユーザー機能のユーザー認証の整理

次にユーザー機能のユーザー認証の整理しています。

前回はメモコントローラーとセッションコントローラーにメソッドを作成していましたが、様々なコントローラーでユーザー認証メソッドを使用したいため、親クラスに移動していきます。

また、今回はユーザー機能を実装したことにより、変数が重複してしまうことが多くなるため、わかりやすいように変数を「@current_user」に修正しています。

同じように「app/controllers/sessions_controller.rb」や「app/views/sessions/new.html.erb」の変数も修正しておきましょう。

ユーザー機能にアクセス制限を実装

次にユーザー機能にアクセス制限を実装しています。

ユーザーがログインしていない状態でユーザー情報の閲覧、編集や更新をされては非常に危ないため、ユーザーコントローラーの「show,edit,update」に「current_user」でアクセス制限をかけています。

また、ユーザーはログイン状態ではユーザー登録ができないようにするため、ユーザーコントローラーの「new,create」に「logged_in?」でアクセス制限をかけています。

おわりに

Ruby on Railsで自作ログイン機能を用いたユーザー機能の実装について解説してきましたが、いかがだったでしょうか。

ユーザー管理は非常に重要な機能なため、今回は省略していますがユーザー削除の機能を実装する場合も論理削除とするか、物理削除とするかもWebアプリケーションの方針に深くかかわってきます。

是非、ユーザーがWebアプリケーションを使いやすいようにするためにも、ユーザー機能の実装にチャレンジにしてみてください。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Ruby