📝

🔰Railsの結合でハマった話

2024/02/28に公開

ActiveRecordを使った結合処理でハマったので備忘のため記録。
諸々ハマったポイントやら注意点やらをまとめていく。

ハマったポイント①:外部キーの設定漏れによる結合時エラー

超初歩的だが、外部結合時にエラーが出力された。
※エラーメモし忘れたので追記予定※

外部キーによるアソシエーションの設定が漏れていたせいでエラーを吐いているらしい。
例えば以下のようなテーブルがあった場合、双方で相関性を設定しなければならない。
①gamesテーブル
②played_gamesテーブル
③will_play_gamesテーブル
(パッと思いついて命名なので適当です...)

①:② = 1:多
①:③ = 1:多

アソシエーションの設定をせず、①と②を結合しようとしたためにエラーが出た。
双方のModelにアソシエーションを追加すれば解決する。

ハマったポイント②:結合時のデータの辿り方

これに関してはRails云々の考え方以前だと思うが、テーブルの結合時に若干詰まった。
上記の例でいうと、②・③に同じidを保持しているカラムがあり②・③を結合したうえで①を取得しようとした。しかし当然、②・③は双方でアソシエーションを設定していないためエラーとなる。

②のテーブルのidをフックとしてデータを取得したかったので②を起点としてしまったが、アソシエーションを考えると①から順に結合していかなければならなかった。
(②・③は階層で考えると並列)

普段のデータ構造の意識の甘さもあり、データをたどるときに無駄に時間がかかってしまったので反省。

まとめ

情報を共有する目的というよりも反省文に近い内容ですw
なのであえてタグ付けしません。
Rails、すごくとっつき辛くて毎日四苦八苦しています。
慣れればすごく扱いやすいんだろうけど、個人的にはActiveRecordの考え方に慣れず...。
早く慣れるように勉強しないと。

Discussion