Rails3.0.1 (Ruby1.8.7) 外部キー設定
Rails3.0.1 (Ruby1.8.7) の環境だとmigrationで外部キーの設定が簡単にできなかったので,いろいろ試してみました。
①add_foreign_key
gemで外部キー設定を簡単に設定できるメソッドが用意されている。
Gemfile
gem 'foreigner'
migration
add_foreign_key(:students, :teachers)
結果
Rubyのversionが1.9.2以上でないと使えない。
bundle install
--
Gem::InstallError: foreigner requires Ruby version >= 1.9.2.
参考
②reference型を使う場合
migration時に以下の書き方で外部キーがつけられる。
migration
create_table :teachers do |t|
t.references :student, :foreign_key => true
end
結果
外部キーつかず。原因不明
参考
③SQL
直接SQLを実行する。
migration
con = ActiveRecord::Base.connection
con.execute('ALTER TABLE teachers ADD FOREIGN KEY (student_id) REFERENCES students')
結果
うまくいきました。
結論
SQLでしか方法が見つかりませんでした。
バージョンが古いと何かと不便ですね。