Rails5.1で変更された主キーのデフォルト型をBIGINTからINTEGERに戻す。

Rails5.1にてPostgreSQLとMySQLのActiveRecordのPrimaryKeyの型がIntegerからBigintに変更されました。

## PullRequest
https://github.com/rails/rails/pull/26266

## Rails 5.1 Release Note
* https://railsguides.jp/5_1_release_notes.html#active-record-%E4%B8%BB%E3%81%AA%E5%A4%89%E6%9B%B4%E7%82%B9

> 9.3 主な変更点
> 主キーのデフォルト型をBIGINTに変更 ([Pull Request](https://github.com/rails/rails/pull/26266))

(英語のリリースノート)

* http://guides.rubyonrails.org/5_1_release_notes.html#active-record-notable-changes

## なぜBigintからintegerに戻すのか
新規のRails ProjectではBigintでも構わないと思うのですが、
Rails5.1以前に作られた既存のプロジェクトで新たにActiveRecord modelを作る際にBigintになると不都合が多いと思います。
※ 既存のアーキテクチャとは違っていて一貫性が取れないなど。

## どうやって変えるか

``` config/application.rb ``` にてgeneratorの設定を変更します。

```ruby
module ExampleApplication
  class Application < Rails::Application
    ......
    ......
    ......

    config.generators do |generator|
      generator.orm :active_record, primary_key_type: :integer
    end
  end
end
```

ActiveRecordのソースコードを眺めると、primary_key_type methodにて型を確認していることが見えます。

```ruby
def primary_key_type
  key_type = options[:primary_key_type]
  ", id: :#{key_type}" if key_type
end
```

* https://github.com/rails/rails/blob/v5.2.0/activerecord/lib/rails/generators/active_record/migration.rb

## 対応した結果

ormのprimary_key_typeがdefaultの場合(bigintのまま

```ruby
class CreateHoges < ActiveRecord::Migration[5.2]
  def change
    create_table :hoges do |t|

      t.timestamps
    end
  end
end
```

ormのprimary_key_typeのdefaultの型をintegerに変更

```ruby
class CreateFoos < ActiveRecord::Migration[5.2]
  def change
    create_table :foos, id: :integer do |t|

      t.timestamps
    end
  end
end
```

create_tableにてidがintegerになっているのが確認できると思います。

## db:migrateをして確認

```bash
$ bin/rails db:migrate
```

```sql
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.15 Homebrew

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use modify-rails-activerecord-primary-key_development;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show create table hoges;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                    |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| hoges | CREATE TABLE `hoges` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create table foos;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| foos  | CREATE TABLE `foos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
```

bigintとintegerになっていることが確認できます。

内容をGithubに公開していますので、不明点があれば確認をお願いします。

[teitei-tk/modify-rails-activerecord-primary-key](https://github.com/teitei-tk/modify-rails-activerecord-primary-key)