TakayukiKoyama Geek Blog

Create, Entertain, Experience

【RailsGuide】Active Record の関連付け belongs_to の primary_key の用途

目的

 belongs_to の primary_key におけるマイグレーション設定が分からなかったのでメモする。

 分かってないこともまだまだ有るので、後で整理する。

Active Record の関連付け (アソシエーション) | Rails ガイド

class User < ApplicationRecord
  self.primary_key = 'guid' # 主キーが guid になります
end
 
class Todo < ApplicationRecord
  belongs_to :user, primary_key: 'guid'
end

マイグレーション

 id: false にすると、referencesのマイグレーションが通らないからidは必要。references(foreign_key ?)をすると関連付けがうまくいかないので、Todo側は t.integer で外部キーを作る。

# user
class CreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      t.integer :guid
      t.timestamps
    end
  end
end

# todo
class CreateTodos < ActiveRecord::Migration[5.1]
  def change
    create_table :todos do |t|
      t.integer 'user_id'
      t.timestamps
    end
  end
end

 t.integer :guidt.integer 'user_id't.string ... とすると文字列の主キーも作れる。