2 flat logo on transparent 256
2018-09-12

Ruby On RailsでシステムIDをbigint型に変更する

Pexels photo 20180912

Ruby On Rails5ではシステムIDは自動でbigint型で作成されます。

しかしRuby On Rails4ではidはint型で作際されますので、今回は システムIDをbigint型へ変更する手順を2つ記載します。

Rails3まではマイグレーションファイルへ生SQLを記載する方法を実行しないと、auto incrementが実行されませんでした。

Rail4でもバージョンによって同様の現象が確認されているので、SQL文で生成することをオススメします、

マイグレーションファイルへSQL文を記載する。

マイグレーションファイルを以下のように記載します

class ArticlesTableIntToBigInt < ActiveRecord::Migration

  def up
    ActiveRecord::Base.connection.execute "ALTER TABLE `artiles` MODIFY `id` BIGINT NOT NULL AUTO_INCREMENT;"
  end

  def down
    ActiveRecord::Base.connection.execute "ALTER TABLE `artiles` MODIFY `id` INTEGER NOT NULL AUTO_INCREMENT;"
  end
end

ActiveRecord::Base.connection.execute で任意のSQL文を実行する事が可能になります。

MySqlでは以下で対象フィールドの属性変更が可能です。

ALTER TABLE テーブル名 MODIFY フィールド名 データ型;

この内容をマイグレーションファイルに記載し、実行すれば システムIDをbigint型へ変更することが可能です。

普通にマイグレーションを生成する

int型へlimit8を設定するとbigint型に変更されます。

class ArticlesTableIntToBigInt < ActiveRecord::Migration
  def up
    change_column :artiles, :id, :integer, limit: 8
  end

  def down
    change_column :artiles, :id, :integer
  end
end

その他関連記事

Ruby On Rails でデータを取得するメソッド一覧

Ruby On Rails でページネーションを設定する

【初心者・独学者向け】Ruby On RailsのModelを活用し前後のレコードを取得して次へ前へのリンクを設定する

Ruby On Railsのデバッグツール byebugの紹介

前の記事
次の記事