3
0

謎の挙動をするFactoryBotの作り方

Last updated at Posted at 2024-06-07

しょーもなく、はたまたネタでもないですが、1時間弱苦しめられたので記す

事象

下記コードを実行したときに、user_idgroup_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分ぐらいで解決した。感謝
3
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
3
0