0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】migrateでのモデル生成などの手順

Last updated at Posted at 2024-10-17

【1】はじめに

記事を作成した経緯

私は4月に進学した大学の課外活動で初めてプログラミング言語について学び始め、 Railsを使ってチーム開発をおこなっている。途中、 migrate をするにあたってステータスを down から up にする方法などをまとめて知ることができるページが存在しなかったため、作成を試みた。

目的

Railsに関する規則・構文について、自分と同じような悩みを持つ人が読みやすい資料として一括にまとめる。また各章末に、参考にした記事のURLを貼っておくので活用してほしい。

お願い

本記事内では、私が「詰まった」あるいは「必要」だと感じた内容を記載しており、内容の一部は「項4.参考サイト」にある記事を参考にしている。また、本記事内に記載のない内容についても同じくリンクしてあるので、もし不明なことがあれば参考先を確認することで解決できる場合がある。

【2】Railsにおける命名規則

命名規則の重要性

Railsのコントローラモデルrails generate あるいは rails g コマンドで生成する際にそれぞれ規則があるということを作成後に気が付いたため、特に注意したいところでもある。

コントローラ

単一単語の場合

名称
コントローラ名 contents
コントローラクラス名 ContentsController
ファイル名 contents_controller.rb

複数単語の場合

名称
コントローラ名 stamp_point
コントローラクラス名 StampPointController
ファイル名 stamp_point_controller.rb

モデル

単一単語の場合

名称 解説
モデル名 user
モデルクラス名 User 先頭大文字・単数形
ファイル名 user.rb 先頭小文字・単数形
テーブル名 users 先頭小文字・複数形

複数単語の場合

名称 解説
モデル名 cancel reason
モデルクラス名 CancelReason 先頭大文字・キャメル・単数形
ファイル名 cancel_reason.rb 先頭小文字・スネーク・単数形
テーブル名 cancel_reasons 先頭小文字・スネーク・複数形

generation構文(例)

rails g model [model name] [column name]:[type] [column name]:[type] ...

例)
myapp# rails g model Task title:string finish:date detail:string owner:string member:string
      invoke  active_record
      create    db/migrate/20240925145024_create_tasks.rb
      create    app/models/task.rb

【3】マイグレートの実行・修正

マイグレートを実行する

私は docker を利用しているため、 docker compose exec rails bash を実行することで rails コンテナの中に入って操作する。

この時、マイグレーションをする前には次のコードでマイグレートの状態を確認したほうがよい。

myapp# rails db:migrate:status

通常のマイグレート

【パターン1】

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20240925143128  Create users
  down    20240925143643  Create admin departments

【パターン2】

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20240925143128  Create users
  down    20240925143643  Create admin departments
  down    20240925144846  Create plans
  down    20240925145024  Create tasks

上記の 【パターン1】【パターン2】 ですべてを up 状態にする場合、一般に以下のようにマイグレートする。

myapp# rails db:migrate

マイグレーションファイルを限定する

【パターン3】

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20240925143128  Create users
  down    20240925143643  Create admin departments
  down    20240925144846  Create plans
  down    20240925145024  Create tasks

マイグレーションをする前にはマイグレートの状態を確認する必要がある。上記の 【パターン3】 において、特定のファイルを up 状態にする場合、一般に以下のようにマイグレートする。

myapp# rails db:migrate:up VERSION="[Migration ID]"

例)Create plans をマイグレートする場合
myapp# rails db:migrate:up VERSION="20240925144846"

マイグレーションの削除

初めに、対象ファイルの状態を確認するため、以下のコマンドを実行。(参考:項「マイグレートの実行」 )

myapp# rails db:migrate:status

すると、本ページのパターン1あるいは以下のようになっていると思われる。

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20240925143128  Create users
   up     20240925143643  Create admin departments
   up     20240925144846  Create plans
   up     20240925145024  Create tasks

基本的には個別にマイグレーションを down 状態にさせる。また、対象のファイルが down 状態になっていなければ以下のようにダウンさせる。

myapp# rails db:migrate:down VERSION=[Migrate ID]

例)Create plans をダウンさせる場合
myapp# rails db:migrate:down VERSION=20240925144846

もう一度状態を確認し、 down になっていれば最後に次のように削除する。

myapp# rm db/migrate/[対象のファイル名]

例)Create plans ファイルを削除する
myapp# rm db/migrate/20240925144846_create_plans.rb

また、ダウンさせる前に対象のファイルを削除した場合は、以下のページを参考にするとよい。

【4】参考サイト一覧

【Ⅰ】命名規則

【Ⅱ】マイグレート

#記事第1号

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?