[Ruby on Rails] 他のテーブルへの外部キーを表すカラムを追加する方法(add_column, references)


Ruby on Rails 3.2.2 にて、他のテーブルへの外部キーを表すカラムを追加する方法を調べたのでメモ。

例えば、Usersテーブルへの外部キーを表すカラムを新規に作成する Testers テーブルに持たせるには、TableDefinition#referencesメソッドで追加できます。

rails g model tester title:string user:references

しかし、既存のテーブルに Usersテーブルへの外部キーを表すカラムを追加する場合は、referencesメソッドは使えません。

rails g migration add_user_to_tester user:references

この場合、外部キーは「テーブル名_id」というカラム名の形式で、整数型として定義してあげればOKです。

rails g migration add_user_id_to_tester user_id:integer

ちなみに、migration ファイルは下記のような感じです。
(外部キーのインデックスも張りました)

class AddUserIdToTester < ActiveRecord::Migration
  def change
    add_column :testers, :user_id, :integer
    add_index :testers, :user_id
  end
end

以上です。

【参考】

activerecord – Rails 3 migrations: Adding reference column? – Stack Overflow はてなブックマーク - activerecord - Rails 3 migrations: Adding reference column? - Stack Overflow

  1. コメントはまだありません。

  1. トラックバックはまだありません。