Rails7 標準の scaffold に、以下機能を追加したテンプレートです。
VSCode Container 拡張機能を使うか、 Docker Compose で開発環境を立ち上げます。 (VSCode Container 拡張機能による起動の説明は省略)
※ 本リポジトリの docker-compose ファイルでは、 PostgreSQL を利用する設定となっています。必要に応じて変更してください。
docker compose up
以下コマンドで、 ruby, nodejs, yarn の環境構築済みのコンテナに入れます。
docker compose exec app bash
rails new
コマンドで、プロジェクトを生成します。
rails new app --css=bootstrap -m ./apptemplate.rb -d postgresql
--css=bootstrap
: 必須 本テンプレートでは、 Bootstrap を利用しているため、必ず指定してください-m apptemplate.rb
: 必須 本テンプレートで使用するライブラリの設定や、 scaffold ジェネレーターをプロジェクトに、適用するためのアプリケーションテンプレートスクリプトです。必ず指定してください-d postgresql
: 使用するデータベース。プロジェクトで使用するデータベースに応じて修正してください開発で使用するデータベースの設定は、 config/database.yml
内の development
セクション内の項目に記載します。
必要に応じて、 production
など、別環境の設定も行ってください。
development:
<<: *default
host: postgres
database: public
username: admin
password: password
./bin/rails generate scaffold Role name:string
./bin/rails generate scaffold Account name:string role:belongs_to expiration_date:date
ひとつのテーブルに対して、複数カラムで foreign key を設定している場合、モデルの belongs_to
を適切に設定してください。
例: app/models/present_history.rb
を編集
class PresentHistory < ApplicationRecord
def self.ransackable_attributes(auth_object = nil)
["id", "name", "from_account_id", "to_account_id"]
end
belongs_to :from_account, class_name: 'Account' # この行の、 `, class_name: 'Account' を追加
belongs_to :to_account, class_name: 'Account' # この行の、 `, class_name: 'Account' を追加
end
制約があれば、 db/migrate/*_create_*
のファイルを修正してください。
以下コマンドで、マイグレーションを実行してください。
rails db:migrate
config/locales
に、各言語毎の辞書ファイルが格納されているので、必要に応じて文字列の修正をしてください。
モデル名や、モデルの属性名を日本語化する場合、 config/locales/ja.yml
へ、以下のように activerecord/models
, activerecord/attributes
以下に文字列の定義を追加してください。
例: config/locales/ja.yml
を編集
...(snip)
ja:
...(snip)
activerecord:
models:
account: アカウント
attributes:
account:
name: 名前
role_id: 権限
expiration_date: 期限
created_at: 作成日
updated_at: 更新日
以下コマンドで、開発用にサーバーを起動します。
BINDING=0.0.0.0 bin/dev
Scaffold の例の通り、Item と Account を作成したとして話を進めます。
http://localhost:3000/accounts
にアクセスすると、次の図のように、検索フォーム付きの一覧画面が表示されます。
気に入らない挙動があれば、生成されたコードを修正してください。
Copyright (C) 2023 mikoto2000
This software is released under the MIT License, see LICENSE
このソフトウェアは MIT ライセンスの下で公開されています。 LICENSE を参照してください。
mikoto2000 mikoto2000@gmail.com
追加したライブラリなど
基本的なところ
一覧表示をテーブルにした
ページネーション
検索フォーム
Turbo の細かいところ
テンプレート/ジェネレーター系
i18n
その他こまごました Tips