しょーもなく、はたまたネタでもないですが、1時間弱苦しめられたので記す
事象
下記コードを実行したときに、user_id
とgroup_id
は同じIDになる想定だったが、なぜか違う値になり混乱していました(変数名は適当なんで気にしないでください)
create(:table_name, user_id: user.id, group_id: user.id, other_group_id: other_group.id)
しかも面白いことに、group_id: 'xxx'
と入れてもそれは反映されず、なぜか数値が返ってきます。はて??????
調査内容
コードをデバッグ
とりあえずprintデバッグを進めると、other_group.id
の値がでていることがわかりました(?)
はて???????
DDLを調べる
テーブル構造が間違えているのでは?と思い調べましたが大丈夫でした。はて?
モデルを調べてみる
あーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
とあるモデル
self.table_name = 'xxx'
belongs_to :other_group, foreign_key: 'group_id'
other_group_id
というカラムがあるのに、group_id
を外部キーにしてました!!!なるほど!
結論
- FactoryBotは悪くない
- 徹夜はいけない
- とりあえず誰かよんで事象を説明してみる
- それやったら10分ぐらいで解決した。感謝