新しいRails 8アプリ作成したら、ユーザーモデルを追加しよう!
Deviseを追加しよう!
今回は、Deviseを追加します。 Rails 8、Turbo、Ruby 3.4という組み合わせで使います。
2022年当時はDeviseがTurbo非対応で、フォークやパッチを当てる必要がありました。 ですがDevise 4.9以降はTurbo対応が本体に入ったので、今はフォーク不要です。 素直に
gem "devise"でOKになりました。
# Gemfile
gem 'devise'
gem 'devise-i18n'
というGemセットになります。
DeviseのViewの国際化(日本語化)は、devise-i18nを使います。
rails generate devise:installを実行して、Deviseをインストールします。
# config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
を追加して、
<%# app/views/layouts/application.html.erb %>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
も追加して、あとはルートのパスをroutes.rbに追加します。
ruby
root to: "home#index"
ただこれで問題になるのはこのホームコントローラーそのものが存在しないことですね。 それも作成しましょう。
rails generate controller Home index
このコマンドでその問題も解決です!
次にDeviseのViewを生成して、Tailwindでスタイリングします。
rails generate devise:views
生成されたapp/views/devise/以下のERBにTailwindのクラスを当てていけば、
ログイン・登録画面が整います。(--css=tailwindで作ったアプリなら、フォーム部品のスタイルも流用しやすいです)
これで全部対応できた!!! というわけにも行かず、まだユーザーモデルがないです。 次はユーザーモデル作成します。
rails generate devise User
だけですので、極シンプルです。 ユーザーモデルのマイグレーションの方は必要なフィールドを追加しています。
t.string :first_name, null: false
t.string :last_name, null: false
とりあえず名前は欲しいですね。
rails db:migrateを実行したら、Deviseの設定はひとまず完了ですね。
今は登録・ログインのリンクがないので、次はナビゲーションバーを作成します。