はじめに
学習する上でメモとして残したいものをここに記載します。
今回はmodelの作成時について分からなかったことを記載します
reference型
今回はdeviseのUserの拡張としてフォロー及びフォロワー関係を作ることが目的でした。
そこでFollowsテーブル(model)を作ることにしました。
参考記事(1)には以下のように記載があった
$ rails g model Relationship follower:references followed:references
この文を見て思ったのがreferencesとは?でしたので参考記事(2)を読んだところこんな感じらしい。
- refernce型は外部キー(FOREIGN KEY)を追加する時に使う
- reference型を使うことによってインデックスを自動に貼ってくれる
- 自動で_idを作成してくれる
外部キーを追加する際に使える型で要件によっては使っていいものくらいに留めておきます。
参考記事(2)にもreference型を使わなくても記載できる方法が出来るらしい。
だが参考記事(3)ではadd_columでの追加が出来ない例も記載されているため使用時には注意する点
外部キー制約
じゃあ制約をかけるのは何故?ということを思ったので参考記事(4)を読んだ。
これは親テーブルと子テーブルの整合性を保たせる為らしい
今回だとユーザーテーブルとFollowsテーブルが存在し、フォローする際にUser_id(外部キー)を参照している。だが参照が出来なくなくなる(例えばアカウントが削除されたなど)場合に片方は削除されたことが分かっているがもう片方は参照するだけなので参照できずにエラーが出てしまう。
ので、削除や編集などの変更が出来るのは一部でありこの一部で変更が行われた際に紐づいて変更されることをする。
参考記事
(1)
(2)
(3)
(4)