Rails · · Sampo Kuokkanen

新しい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の設定はひとまず完了ですね。

今は登録・ログインのリンクがないので、次はナビゲーションバーを作成します。