MySQLで符号なしの整数を扱えるようにする activerecord-mysql-unsigned というgemがあるのですが、これを入れるとデフォルトで primary key
を符号なしにしてしまうので、外部キー制約などをかけるときにしっかり参照する側も符号なしにするよう気をつけようという話。
あと、このgemの追加前にmigrationした人とgem追加後にmigrationした人ではschemaに差が出てしまうので、後から開発チームに加わった人が手元のPCなんかでmigrationするときも注意したほうがいいかと思います。
class CreateTables < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :name, null: false
end
create_table :articles do |t|
t.references :user, null: false, unsigned: true #しっかりunsignedにする
end
add_index :articles, [:user_id]
add_foreign_key :articles, :users #でないとここで失敗する
end
def self.down
drop_table :users
drop_table :articles
end
end