0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ユーザー管理機能の実装(1)

Posted at

今回は、ユーザー管理機能の実装を行なっていきたいと思います!
1~7の手順で進めていきます
(1)では1. deviseのインストール、2. Userモデルの作成を行うところまでやっていきます

#目次

  1. deviseのインストール

  2. Userモデルの作成

  3. deviseのviewファイルを追加

  4. サインアップ機能の追加

  5. ユーザー情報編集機能の追加

  6. ログアウト機能の追加

  7. フラッシュメッセージの表示機能の実装
    #1. deviseのインストール
    ユーザー管理機能のの実装には、”devise”を使用します
    まず初めにGemfileを開きましょう!
    Gemをインストールするために、Gemfileに追記を行います

(略)
Gem ‘devise’
(略)

Gemfileのgroup内に記述しないように注意しましょう!
*group内に記述した場合、特定の環境のみで使用される設定になってしまします

次に、deviseのインストールを行います ターミナルでbundle installを行い、続いてdevise用のインストールコマンドの実行を行います!

% bundle install
% rails g devise:install

これでdeviseのインストールは完了です!

#2. Userモデルの作成
ユーザーの管理を目的とするモデルファイルやテーブルを作成していきます!
次の2つの点に注意して進めていきましょう!

・deviseで使用するモデルを作成する際は、rails g modelといった通常のモデル作成とはコマンドが異なる
・どんなカラムを追加するか、カラムにどんな制約をかけるかを事前にDB設計を確認する

それでは、Userモデルを作成していきましょう! まず、ターミナルで以下のコマンドを実行します

% rails g devise user

これによりuser.rbマイグレーションファイルなどが作成されました
routes.rbにもdevise_for :usersの記述が追加されました

次に、マイグレーションファイルに追記を行います migrateディレクトリにマイグレーションファイルが作成されているので確認してみましょう! xxxxxxxxxxxxxx_devise_create_users.rbといったファイルが確認できると思います
ファイルが確認できたら、nameカラムにNUT NULL制約をかけるために、changeアクションの中に以下の追記を行います

xxxxxxxxxxxxxx_devise_create_users.rb
t.string :name, null: false

また、同じくnameカラムに一意性制約をかけるために、changeアクション外には次の追記をしていきましょう

xxxxxxxxxxxxxx_devise_create_users.rb
add_index :users, :name, unique: true

しかしこのままでは空文字も保存できてしまうため、user.rbに以下の追記を行います

user.rb
validates :name, presence: true, uniqueness: true

最後にマイグレーションの実行を忘れずに行いましょう!

% rails db:migrate

今回はここまで!
ユーザー管理機能の実装(2)では、deviseのviewファイルを追加などを行なっていきます
お疲れさまでした!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?