※アプリケーション作成からDeviseの導入までをメモがわりに記入しています。
前提
ruby 6.0.0
rails 6.0.3.4
mysql2 0.5.3
devise 4.7.3
上記の環境で作成する。
簡易的な流れ
①作りたいアプリケーションを立ち上げます。
% rails _6.0.0_ new アプリ名 -d mysql
②アプリ内のdatabase.ymlの記述を書き換えます。
#中略
default: &default
adapter: mysql2
# ↓↓元々はencoding: utf8mb4
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /tmp/mysql.sock
#以下略
③gemfile内の最下層に追加したいgemを記入します。
#中略
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'pry-rails'
gem 'devise'
④gemを読み込ませます。
% bundle install
% yarn install
⑤コンソール上の作成したアプリのディレクトリでデータベースを作成します。
% rails db:create
⑥アプリにDeviseをインストールします。
% rails g devise:install
⑦Deviseを用いたモデルの生成をします。
(マイグレーションファイルやルーティングも自動生成されます。)
# モデル名は単数
% rails g devise モデル名
⑧新規登録とログインのためのビューファイルを作成します。
% rails g devise:views
⑨ローカルサーバーを起動します。
% rails s
⑩マイグレーションファイルに追加するカラムを記述します。
※emailとpasswordについてはdeviseで生成した時に作成されています。
11.テーブルをマイグレーションします。
% rails db:migrate
12.各編集・設定を行います。
view/devise/registrations →新規登録画面の編集
view/devise/sessions →ログイン画面の編集
model/テーブル名.rb →バリデーションの設定
13.application_controller.rbを編集します。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
# keysの内容はdeviseのテーブルに追加したカラム名
devise_parameter_sanitizer.permit(:sign_up, keys: [:カラム1, :カラム2, ‥])
end
end
以上
その他注意点など
・新規登録ページ、ログインページに至るためのルーティングは、モデル作成時に自動で生成されています。
・ユーザー管理機能に必要なコントローラーの処理は裏側に隠れているため、コントローラーを統括している「application_controller.rb」に対して記述することになります。
・「rails g devise:install」がうまくいかない時は、以下を実行してみましょう。
$ bundle exec spring stop