Railsで以下の2つのテーブルを作成しようとしております。
【Usersテーブル】
user_code:主キー
name
【Postsテーブル】
post_id:主キー
title
user_code:外部キー
Usersテーブルではデフォルトで作成されるuser_id
という主キーではなく独自に設定したuser_code
という主キーを使用したいと思い、以下のようなマイグレーションファイルを作りました。
rb
1class CreateUsers < ActiveRecord::Migration[6.0] 2 def change 3 create_table :users, id: false do |t| 4 t.bigint :user_code, primary_key: true 5 t.string :name 6 7 t.timestamps 8 end 9 end 10end
user_code
という主キーを作ることはできたのですが、PostsテーブルでUsersテーブルを外部キーに設定したい場合どのようにしたらよいでしょうか?
Postsテーブルを以下のようなマイグレーションファイルにしたらuser_id
がないため案の定外部キーを設定できませんでした。
解決方法をご存知の方がおられましたらお知恵をお貸しいただけると助かります。
rb
1class CreatePosts < ActiveRecord::Migration[6.0] 2 def change 3 create_table :posts do |t| 4 t.string :title 5 t.references :user, foreign_key: true 6 7 t.timestamps 8 end 9 end 10end
> Usersテーブルではデフォルトで作成されるuser_idという主キーではなく独自に設定したuser_codeという主キーを使用したいと思い
ユーザー番号を任意で付ける場合、t.bigint :user_codeに値を保存し、必要に応じて取得。
外部キーはシンプルにuser_idを利用すれば良いと思うのですが、これにはどのような意図があるのでしょうか?