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?

More than 1 year has passed since last update.

【Rails】マイグレーションのGeneratorから学ぶ命名規則

Last updated at Posted at 2021-12-20

はじめに

マグレーションファイルは以下のようにGeneratorで生成することができます。

$ rails generate migration AddPartNumberToProducts

参考: https://railsguides.jp/active_record_migrations.html

このGeneratorは特定のファイル名が与えられたとき、よしなにテンプレートファイルを出力します。
ここでは、Railsが用意しているパターンを調査し、マイグレーションファイルにどのような名前をつけるのがRails Wayに沿っているかを調査します。

add_X_to_Y

カラムやインデックスなどを追加するマイグレーションファイルを生成します。

$ rails g migration add_token_to_user auth_token:token

class AddTokenToUser < ActiveRecord::Migration[7.0]
  def change
    add_column :users, :auth_token, :string
    add_index :users, :auth_token, unique: true
  end
end

remove_X_from_Y

カラムやインデックスなどを削除するマイグレーションファイルを生成します。

$ rails g migration remove_user_ref_from_products user:references

class RemoveUserRefFromProducts < ActiveRecord::Migration[7.0]
  def change
    remove_reference :products, :user, null: false, foreign_key: true
  end
end

join_table

名前の一部に join_table が含まれているとテーブル結合を作成するマイグレーションファイルを生成します。

rails g migration create_join_table_customer_product customer product

class CreateJoinTableCustomerProduct < ActiveRecord::Migration[7.0]
  def change
    create_join_table :customers, :products do |t|
      # t.index [:customer_id, :product_id]
      # t.index [:product_id, :customer_id]
    end
  end
end

create_X

テーブルを作成するマイグレーションファイルを生成します。

rails generate migration create_products name:string part_number:string

class CreateProducts < ActiveRecord::Migration[7.0]
  def change
    create_table :products do |t|
      t.string :name
      t.string :part_number

      t.timestamps
    end
  end
end

Railsのソースコード

メモとして残しておきます。

  • /lib/rails/generators/active_record/migration/migration_generator.rb
  • /lib/ruby/gems/2.7.0/gems/railties-7.0.0/lib/rails/generators/generated_attribute.rb
  • /lib/rails/generators/active_record/migration/templates/migration.rb.tt
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?