LoginSignup
0
0

More than 5 years have passed since last update.

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.

参考

Foreigner 雑記

②reference型を使う場合

migration時に以下の書き方で外部キーがつけられる。

migration
    create_table :teachers do |t|
      t.references :student, :foreign_key => true
    end

結果

外部キーつかず。原因不明

参考

Railsの外部キー制約とreference型について

③SQL

直接SQLを実行する。

migration
    con = ActiveRecord::Base.connection
    con.execute('ALTER TABLE teachers ADD FOREIGN KEY (student_id) REFERENCES students')

結果

うまくいきました。

結論

SQLでしか方法が見つかりませんでした。
バージョンが古いと何かと不便ですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0