はじめに
こんにちは!
本日はRailsのdeviseというGemを使って、ユーザー別にログイン画面を分けて実装する方法をご紹介いたします^^
ここでは生成するユーザーとして、PostWriter(記事書く人)とPostReader(記事読む人)を作っていきたいと思います!
前提条件として、Railsの環境構築、deviseのインストール・設定(rails g devise:installコマンドなど)は終わっているものとします。
Modelを生成する
Modelをコマンドラインから実行していきます!
ちなみにgはgenerate
の略になります。略語でも実行できるのとてもありがたいですね^^
PostWriterモデルを作成するにはこちらのコマンド
→ $ rails g devise PostWriter
PostReaderモデルを作成するにはこちらのコマンド
→ $ rails g devise PostReader
こちらはよく使用するコマンドであるrails g model モデル名
とよく似ていると思います。その要領で大丈夫です。モデルを作成したので、rails db:migrate
を忘れずに!
Controllerを生成する
続けてControllerを生成していきます!
PostWriterコントローラーを生成するにはこちらのコマンド
→ $ rails g devise:controllers post_writers
PostReaderコントローラーを生成するにはこちらのコマンド
→ rails g devise:controllers post_readers
ここではコマンド内で、controller
ではなく、controllers
とsがついていることに気をつけてください^^
設定ファイルを変更する
下記のコードがデフォルトだとコメントアウトされていると思いますので、こちらのコメントアウトを外します。
この行はdeviseのViewをカスタマイズするために設定するものとなります。設定ファイルを変更した際は、rails s
などサーバーの再起動を忘れずに!
config.scoped_views = true
Viewを生成する
PostWriterビューを生成するにはこちらのコマンド
→ rails g devise:views post_writers
PostReaderビューを生成するにはこちらのコマンド
→ rails g devise:views post_readers
ルーティングを設定する
# config/routes.rb
Rails.application.routes.draw do
devise_for :post_readers, controllers: {
sessions: 'post_readers/sessions',
passwords: 'post_readers/passwords',
registrations: 'post_readers/registrations'
}
devise_for :post_writers, controllers: {
sessions: 'post_writers/sessions',
passwords: 'post_writers/passwords',
registrations: 'post_writers/registrations'
}
end
それぞれのログイン画面を表示してみる
まずPostWriter(記事書く人)のログイン画面を表示してみましょう。(localhost:3000の部分はそれぞれの環境によって変えてください。)
URL:http://localhost:3000/post_writers/sign_in
次にPostReader(記事読む人)のログイン画面を表示してみましょう。
URL:http://localhost:3000/post_readers/sign_in
エラーが出た場合は、
・サーバーは起動しているか → rails s
・モデルを作成したのでmigrateする → rails db:migrate
・ルートが間違っているかも? → rails routes
終わりに
以上がRailsのdeviseを使って複数のユーザー別でログインする方法でした。
プログラミングを勉強し始めて思ったのは、やはり知っていることが多いほど特をする。。
他の業界でも同じだと思いますが、この業界でも同様ですね^^
一つ知っているだけでコーディングのスピード感が全然違ってきます。それが積み重なっていった方が激強エンジニアや、つよつよエンジニアと呼ばれるのかもしれません笑
はじめ私はrails routes
コマンドを知らず、エラー画面とひたすら向き合っていました。。。