19
11

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 5 years have passed since last update.

マイグレーションファイルの命名規則

Posted at

#目的
マイグレーションファイルを作成する際に
作成のみでなく閲覧者などにもわかりやすい命名にするため規則などを記載していく

#taskテーブルを作成
rails g migration CreateTasks name:string content:text

マイグレーションファイル例
class CreateTasks < ActiveRecord::Migration[5.2]
def change
    create_table :tasks do |t|
      t.string :name
      t.text :content
    end
end

#taskテーブルにカラムを追加
rails g migration AddStateToTasks state:string
rails g migration add_state_to_tasks state:string

マイグレーションファイル例
class AddStateToTask < ActiveRecord::Migration[5.2]
  def change
    #[形式]add_column(テーブル名,カラム名,データ型)
    add_column :tasks, :state, :string
  end
end

add_columnには次のオプションを指定することができる。
・ null:true … NOT NULL制約を削除
・ null:true … NOT NULL制約を追加
・ limit: size … ファイルのサイズに対する制限を設定
・default:[val]… [val]に設定した値をレコード作成じのカラムのデフォルト値とする

#taskテーブルに追加したカラム名を変更
rails g migration RenameFromStateToTasks
rails g migration rename_state_to_tasks

マイグレーションファイル例
class RenameFromStateToTasks < ActiveRecord::Migration[5.2]
  def change
    #[形式]rename_column(テーブル名,変更前のカラム名,変更後のカラム名)
    rename_column :tasks,:state,:status
  end
end

#taskテーブルに追加したカラムのデータ型を変更
rails g migration ChangeStatusOfTasks
rails g migration change_datatype_status_of_tasks

マイグレーションファイル例
class ChangeDatatypeStatusOfTasks < ActiveRecord::Migration[5.2]
  def up
    #[形式]change_column(テーブル名,カラム名,データタイプ,オプション)
    change_column :tasks, :status, :integer

    # オプション
    # limit - カラム長の最大数
    # change_column :tasks, :status, :integer, limit: 120

    # default - カラムのデフォルト値を設定。NULLにしたい場合は、nilを指定
    # change_column :tasks, :status, :integer, default: "タイトルがありません"

    # null - null制約を設定。false -> null制約がON。true -> null制約がOFF
    # change_column :tasks, :status, :integer, null: true
  end
end

#taskテーブルに追加したカラムにインデックスやユニーク制約の追加
rails g migration AddIndexStatusToTasks
rails g migration add_index_Status_to_tasks

マイグレーションファイル例
class AddIndexStatusToTasks < ActiveRecord::Migration[5.2]
  def change
    add_index  :tasks, :status
   #add_index  :tasks, :status ,unique: true ユニーク制約も付加可能
  end
end

#taskテーブルに追加したカラムにNULL制約の追加
rails g migration ChangeNotNullToTasks
rails g migration change_notnull_to_tasks

マイグレーションファイル例
class ChangeNotNullToTasks < ActiveRecord::Migration[5.2]
  def change
    #tasksテーブルのstatusにNOT NULL制約を追加
    change_column_null :tasks, :status, false
  end
end

19
11
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
19
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?