こんにちは。Web開発6週目、Rails初心者の あをか です。
初心者にとってdeviceというgemはブラックボックスで、何がどう繋がっているのか把握しづらかったです。
復習も兼ねて、deviceの導入過程を書いていきます。
■ ログイン機能(device)
①deviceを入れてモデルとテーブルを作ろう
gem 'device'とGemFileに書き、 ターミナルで①bundle install➡②rails g devise:installする。 続いてログイン機能で欠かせないuser情報を扱うために、モデルとテーブルを作成したい。 rails g model User string:name, string:email,...かと思いきや、deviceの時は違う。 rails g devise UserだけでUserテーブルの中身まで作成してくれる。 ただしdeviceで作成したテーブルのカラムは、デフォルトではemailとpasswordだけ。 ユーザー名を管理したい場合、 db/migrateの下にあるマイグレーションファイルにt.string :nameと追記する。 (その他userテーブルで管理したいものはこの時に全て書いておくこと) マイグレーションファイルへの追記が終わったら、rails db:migrateする。 (rails db:migrateをした後に間違いが見つかると少しめんどくさい。このコマンドで、この時のマイグレーションファイルがschemaファイルに反映され、マイグレーションファイルは読み取り専用になるから。ちなみにschemaファイルは現在のテーブル一覧が分かるので便利。
※詳しくは➡https://qiita.com/kakiuchis/items/2ed1604557ee29bbcbf7
※カラムを変えたくなったら➡https://qiita.com/azusanakano/items/a2847e4e582b9a627e3a)
②routesファイルとUserモデルを確認しよう(見るだけ)
routes.rbにdevise_for :usersと書かれているはず。 user.rbに devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatableと書かれているはず。③ユーザー登録画面とログイン画面のレイアウト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908193/d850cebc-1940-cf7d-57b7-63bcac2cdf50.png) app/views/devise/registrations/new.html.erbがユーザー登録画面、 app/views/devise/sessions/new.html.erbがログイン画面。 適宜編集しましょう。name入力フォームを作る時はtext_field使うのに注意。emaiilとpasswordが特殊なんです。④deviceのコントローラはどこ・・?
結論から申しますと、deviceコントローラは触る事ができません(存在はするようです)。 で、どうするかというと、application_controllerで操作します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908193/de0224d0-2927-8a25-abe0-c36b1b232166.png) 1~4行目・13~16行目を書きましょう。 privateではなくprotectedなのは、別のコントローラからも操作できるように。 (5~11行目はログイン・ログアウト後のルートを変えたい場合の記述)⑤バリデーション
userテーブルのnameカラムにバリデーションを設定したいので、 models/user.rbに記述する。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/908193/99357b04-4065-9a1d-1723-808a74972f22.png)以上、device導入の備忘録でした。
初心者なので間違い等あるかもしれませんが、その際は教えて下さると幸いです!!