LoginSignup
2
0

More than 5 years have passed since last update.

モデル間にアソシエーションを追加するときのDB側のやり方とアンチパターン

Last updated at Posted at 2018-01-05

前提

User-Micropost 間に 1:多 のアソシエーションを追加する場合の解説です。

外部キー制約をつける正しい方法

reference 型のカラムで実現するので、以下のように行う。

# Micropost 作成
$ rails generate model Micropost content:string
# 外部キー制約をつける
$ rails generate migration AddUserIdToMicroposts user:references

まとめてやってもよい。

$ rails generate model Micropost content:string  user:references

アンチパターン

すでにあるマイグレーションファイル(2018xxxxxxxxxx_create_microposts.tbとか)に t.integer: user_id などとベタ書きしてはならない。
それでもUser.first.micropostsとかで取ることはできるが、↑に比べると諸々十分ではない。

そもそも一般に、すでに master に push されたマイグレーションファイルを編集して上げ直すのはよろしくないはず。変更するマイグレーションを新たに作るべし。

2
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
2
0