🔖
[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