ユーザー管理機能の実装①

ゴール:

トップページから新規登録ページに遷移し、正しく登録できるとトップページに戻るように実装する。

 

このゴールを達成する為に、実装過程をいくつかに分けて説明していきたいと思います。

実装過程:Userモデルとテーブルを作成する

①deviseのインストール

deviseのインストール方法については、前回の記事に書きましたので、それをご参照ください。

 

②Userモデルを作成する。

まず、deviseでUserモデルを作成します。

モデルを作成する為には、

「% rails g devise モデル名」を実行します。

 

今回は、「Userモデル」なので、「rails g devise user」とコマンドを入力することにより、モデルが作成されます。

 

上記のコマンドを実行すると、モデルの作成意外にも、「マイグレーションファイル」、「ルーティング」が自動生成されます。

 

マイグレーションファイルは、

config/db/migrateディレクトリの中に生成されます。

「2020XXXX_devise_sreate_user.rb」というようなファイルです。

 

ルーティングは、

configディレクトリに「routes.rb」というファイルがあります。

railsで新規アプリを立ち上げる際に、自動で生成されます。

そのファイル内に「devise_for users」というルーティングが設定されます。

 

③テーブルを作成する。

先ほど生成されたマイグレーションファイルを編集して、テーブルを作成していきます。

 

rails g devise user」で生成されたマイグレーションファイルには、デフォルトで

「メールアドレス」と「パスワード」のカラムが設定されています。

また「t.timestamps null: false」という記述があり、これは、レコードの作成日時と更新日を管理する為のカラムが設定されています。

 

ユーザー管理機能に必要なその他の「ユーザー名」、「プロフィール」などを必要に応じて記述していきます。

 

記述方法は、下記の通りになります。

『t.カラムの型 :追加したいカラム名

そのあとに条件として、「カラムの名が空ならば、登録できない」という意味で、

「null: false」と記述する。

 

マイグレーションの実行

「% rails db:migrate」を実行して、テーブルにマイグレーションファイルを反映させる。

 

今回は、モデルとテーブルを作成しました。

 

次回は、作成したモデルにバリデーション(制限)をかける実装を行っていきたいと思います。

 

次回もよろしくお願いします。

 

 

ユーザー管理機能の実装について

ユーザー管理機能を伴ったアプリを制作しています。

ユーザー管理機能とは、アプリケーション利用に伴うログイン/新規登録機能のことです。アプリケーションを利用する人の名前やパスワード、メールアドレスなどを管理し、そのユーザー情報が登録されているかどうかを判断します。

 

Railsにおいてユーザー管理機能を簡単に実装することができるGemがあります。

 

『devise』です。

このDeviseというGemを使うことにより、ユーザー管理機能の実装が簡単に行うことができす。

 

セットアップについて

1:gemのインストール

コードエディターのGemFileに下記の通り記述します。

『gem  'devisse'』

その後ターミナルで下記のコマンドを入力

『bundle install』

これでインストールは完了となります。

 

2:deviseに必要なファイルの作成

ターミナルで下記のコードを入力

rails g devise:install』

このコマンドを実行することにより、必要な設定ファイルが自動で生成される。

 

3:ユーザー管理に必要なモデルの作成

ターミナルで下記のコマンドを入力

rails g devise  モデル名』

*モデル名には、作りたいモデル名を入力する。

 ユーザー管理機能のモデルなので、「User」というモデル名で作ることが多いかもし  

 れません。

 

このコマンドを実行することにより、モデルのファイルやマイグレーションファイル、ルーティングが自動生成されます。

マイグレーションファイルとは、データベースの設計に関する記述をするファイル

 テーブルに追加したいカラムがあれば、マイグレーションファイルに記述する。

 

モデルとマイグレーションファイルが生成されたら、テーブルを作成する為に、

下記のコマンドを入力する。

rails db:migrate』

このコマンドを入力することにより、データベースにテーブルを作成することができます。

 

上記の設定をすることにより、ログインや新規登録の画面を表示することができます。

実際に活用する場合は、パスの設定や条件分岐、必要に応じてビューファイルの作成などを行ってしていく必要がありますが、必要なファイルやルーティングを自動生成してくれる為、ユーザー管理機能を導入する

場合は、かなり負担が軽くなると思います。

 

次回は、より具体的に、ユーザー管理機能を実装する為にどうすかについて記事を書いて行こうと思います。

 

それでは、最後まで読んでいただきありがとうございました。

 

 

 

 

 

コントローラーの設定について

コントローラーとは、リクエストに対してどのような処理を行うかを定義するところになります。

リクエストに対応する処理をまとめて用意しておき、ルーティングからリクエストを受け取って処理を行った後、クライエントにレスポンスを返します。

 

具体例を挙げると

 

ルーティングから送られてきた「トップページを表示する処理」に対して、実際の処理内容について定義します。

レスポンスに必要となるデータがあれば、モデルと連携してデータ取得をしたり、受け渡しを行い、レスポンスを完成させます。

 

Railsにおいて新規アプリケーションで、コントローラーを作成する際は、ターミナル上で下記のコマンドを実行します。そうするとコントローラーを記述するためのファイルが生成させます。

 

rails g controller コントローラー名

 

*gは英語で「生成する」を意味するgenerateの略です。

*コントローラーの命名規則は、複数形を使用します。

 

具体例を挙げて説明していきます。

 

実際に、ターミナル上でrails g controllerをする際は、

現在、どのディレクトリにいるかを確認します。

 

作成しているアプリのディレクトリ下に移動して、コマンドを実行するようにします。

 

ターミナル上で下記のコマンドを実行する。

rails g controller posts

 

そうすると、このような表示がされます。

Running via Spring preloader in process 24861

     create  app/controllers/posts_controller.rb

     invoke  erb

     create    app/views/posts

     invoke  test_unit

     create    test/controllers/posts_controller_test.rb

     invoke  helper

 

*createは「生成したファイル」という意味です。

invokeは生成したファイルに関連するフレームワークの機能を表しています。

 

そうすると、VSコードに上記のファイルが生成されています。

 

コントーローラーを定義するためのファイルが生成できたので、実際にコントローラーにアクションを定義していきます。

 

アクションは、コントローラーにインスタンスメソッドとして、定義していきます。

どの動作を行うかによって、種類が分かれます。

 

アクション名

どのような時に動くか

index

一覧表示ページを表示するリクエストに対応して動く

new

新規投稿ページを表示するリクエストに対応して動く

create

データの投稿を行うリクエストに対応して動く

show

個別詳細ページを表示するリクエストに対応して動く

edit

投稿編集ページを表示するリクエストに対応して動く

update

データの編集を行うリクエストに対応して動く

destroy

データの削除を行うリクエストに対応して動く

 

コントローラーにアクションの設定をする際の記述は、

 

 def  アクション名

 end

 

と記述します。

MVCの流れ(ルーティングについて)

ルーティングとは、クライエントからリクエストがあった際に、リクエストに対応した行き先を定義することです。

 

例えば、「トップページをみたい」というリクエストがあった時、ルーティングにより、この「トップページを表示する処理」をするようにリクエストの行き先を定義します。

 

それでは、実際にルーティングを設定していきます。

 

Railsのルーティンングは、configディレクトリのroutes.rbに記述していく。

記述方法は以下の通りとなります。

 

「HTTPメソッド 'URIパターン', to: 'コントローラー名#アクション名’」

 

具体例を書いてみます。

 

get 'posts', to: 'posts#index'

 

これは、以下のようなルーティンングになります。

 

・リクエス

GETのHTTPメソッド(トップページを表示させる為に)

URLはhttp://localhost:3000/posts

 

・行き先

Postsコントローラーという名前のコントローラー

Indexアクションという名前のアクション

 

 

config/routes.rbにルーティングを設定した後、それがしっかり設定できているか確認する為に、ターミナル上で「rails routes」コマンドを実行することにより、アプリケーションで設定されているルーティングを確認することができます。

 

Rails routesを実行するとターミナル上に下記のように表示されます。

 

Prefix  Verb  URI Pattern       Controller#Action

posts   GET   /posts(.:format)  posts#index

    

GET :HTTPメソッド

/posts(.:format):UR I

  posts#index:リクエストを処理するコントローラーとアクション

 

このようにターミナル上で表示されれば、ルーティングの設定は完了です。

MVCの理解について

MVCの理解について

プログラミングをする際にMVCの理解は必須になってくると思います。

 

MVCとは

MVCとは、M:モデル、V:ビュー、C:コントローラーの頭文字を取ったものになります。

 

基本的な流れを説明します。

①リクエス

②ルーティング

③コントローラー

④モデル

⑤ビュー

⑥レスポンス

 

私たちが普段利用するウェブサービスにおいて、一つ一つの操作のたびに、このMVCが瞬時に行います。

 

さらに詳しく説明していくと

 

ウェブサービスを利用している人が、例えばウェブ上の「ログイン」のボタンをした場合、リクエストとして、HTTPメソッドとURIがセットになったものが、インターネットを介して送られる。

 

②送られたリクエストをどのコントローラーのどのアクションを動かすかの割り振りを決める。

 

③コントローラーは、その割り振りを受けて、必要に応じてモデルやビューとやりとりをする。

 

④モデルは、データベース内にあるテーブルにアクセスしてデータの操作を行う。

 

⑤ビューは、レスポンスとしてウェブページへ返す際に見た目の部分を 整える。

ビューファイルは、コントローラー名と同じディレクトリのアクション名と同じファイルをレスポンスとして返す。

 

⑥レスポンスとして、「ログイン」ボタンを押した後のページが表示される。

 

MVCの役割や流れを理解することは、コードの作成やエラー解決にも必須となってきます。

 

今後、実際にコードを書いたり、書いたコードの読み下しをしたりしながら、さらに理解を深めていきたいと思います。

ブログ開設!!

初めてブログを書きます。

ブログを書こうと思ったきっかけが、プログラミング学習における知識・スキル向上目的で書きます。

 

私は、14年間、介護の仕事をしてきました。

介護の仕事には、事務作業も多く含まれています。

 

実際の介護の現場では、人で不足もあり、ゆっくりと利用者の方と過ごす時間を取ることが難しい現状があります。

 

中にはそのようにできている方もいらっしゃると思いますが、私の経験談からすると、あっという間に一日が終わってしまいます。

 

そのような日々を過ごしていく中で、現状に対して疑問に思うようになりました。

 

この状況を変えられないかと模索している中で、プログラミングのことを知りました。

 

プログラミングには、無限の可能性があるのではないかと期待に胸が膨みました。

 

ここで、一大決心をして、介護の仕事をやめて、オンラインスクールでプログラミングの学習をはじめました。

 

介護業界にITを広め、業務負担の軽減、効率化を図り、利用者・介護スタッフの笑顔を増やせるように取り組んでいきたいと思っています。

 

まだプログラミンを学習して1ヶ月ですが、今後、このブログを通して、学習で学んだことや経過報告などを中心に記事を書かせて頂き、成長していきたいと思います。

 

どうぞよろしくお願いします!