← All posts

by Sampo Kuokkanen

User avatar
Sampo Kuokkanen
Rails
2022-01-10
新しいRails 7アプリ作成したら、ユーザーモデルを追加しよう!

Deviseを追加しよう!

今回は、Deviseを追加します。 Rails 7, Turbo, Ruby 3.1.0という組み合わせで使っていますので、 Gemfileにgem "devise"を追加してもうまく行かないです。

こちらを解決してくれているPRはDeviseに対してされていますが、 問題は一つにはまとまっていないということです。

なので、Deviseをフォークして、フォークしたものにそのPRをマージして、それを使わないといけないです。 こちらはやっていますので、以下のものを使ったらすぐ使えます:

# Gemfile
gem 'devise-i18n'
gem 'devise', git: 'https://github.com/sampokuokkanen/devise.git', branch: 'master'
gem 'devise-tailwindcssed', git: 'https://github.com/sampokuokkanen/devise-tailwindcssed.git', branch: 'rails-version-limit-removal'

というGemセットになります。 DeviseのViewの国際化(日本語化)は、devise-i18nを使います。 Deviseは今Turbo非対応のため、フォークしたものを使います。 スタイルはTailwindCSSを使いますので、それようのGemも追加します。 (GemはTailwind 1.0用に作られたみたいで、微妙に修正も必要な箇所があるかもしれないです)

rails generate devise:installを実行して、Deviseをインストールします。

config/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

を追加して、

application.html.erb
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>

も追加して、あとはルートのパスをroutes.rbに追加します。

root to: "home#index"

ただこれで問題になるのはこのホームコントローラーそのものが存在しないことですね。 それも作成しましょう。

rails generate controller Home index

このコマンドでその問題も解決です!

rails generate devise:views:tailwindcssed

このコマンドを使うと、TailwindCss対応のViewも作成されます。

これで全部対応できた!!! というわけにも行かず、まだユーザーモデルがないです。 次はユーザーモデル作成します。

rails generate devise User

だけですので、極シンプルです。 ユーザーモデルのマイグレーションの方は必要なフィールドを追加しています。

t.string :first_name, null: false
t.string :last_name, null: false

とりあえず名前は欲しいですね。

これでDeviseの設定はひとまず完了ですね。 今は登録・ログインのリンクがないので、次はナビゲーションバーを作成します。

Ruby, Elixirの開発はご相談ください!

合同会社Sampo Development

sampo@sampo.ltd