🔖
[Rails] 主キーの名前だけを変更する
まえおき
テーブルの主キーの名前を id 以外に変更する必要があったので、その時のメモ。ちなみに変えるのは名前だけで、中身の挙動(= 自動で連番されていくやつ)は変えない。
環境
Rails: 6.1.4
MySql: 10.13
結論(マイグレーションファイル)
class CreateHogeTable < ActiveRecord::Migration[6.1]
def change
create_table :hoge_tables, id: false do |t|
t.column :hoge_id, 'BIGINT PRIMARY KEY AUTO_INCREMENT', null: false
end
end
end
雑解説
-
id: falseで自動生成される主キー(=id) を生成しないようする。 -
t.columnにすることで第二引数に生SQLのようなオプションを追加できる。そしてそのオプション内容がBIGINT PRIMARY KEY AUTO_INCREMENTとなる。これでデフォルトで自動生成される主キーの機能を損なうことなく名前だけを変更できる。- ここでは
BIGINTで指定しているがintを使用したい場合はINTとすればいい
- ここでは
Discussion