Ruby on Rails

【Rails】Factory already registered: エラー

railsでアプリ開発中、最新のfeatureブランチでリベースしてからアプリを起動しようとした所
Factory already registered: user_posts というエラーが発生し、起動できなくなりました。
(user_posts)の部分は、factory_botの名前です)

結論

同じ名前のfactory_botが既に定義されていた。

user_posts でコード検索をしてみると
spec/factories/user_posts.rb と、spec/factories/user/posts.rb という2箇所のファイルで
factory_botが定義されていました。

user_postsは、UserモデルのモジュールとしてUser::Postで定義されているモデルです。
なので、factoryファイルは spec/factories/user/posts.rb にあります。

二重定義されているので、spec/factories/user_posts.rb を削除することでエラーが解消しました!

環境

OS: MacOS
メモリ: 32GB

Dependents
Rails6
Ruby 2.6
CentOS7 on Vagrant
Mysql 5.7

まとめ

今回ハマったポイントとしては、
モジュール定義されているので、user/posts.rb にfactoryがあると思い込んでいた所です。

おそらく、最初にrailsコマンドでmodel作成した時には、モジュール定義がされておらず
user_posts.rb でfactoryが作成され、後から手動でモジュール定義に切り替えた事が原因のようです。

後からモデルをモジュール化する場合には、
modelファイルだけでなくspecとfactoryの変更も忘れないようにしたいですね。

ピックアップ記事

  1. 【Blender】zip版のBlenderをBlender Launcherに移…
  2. 【CSS】おしゃれなラジオボタンを作る
  3. 【Blender】レンダリング結果を新規ウィンドウで開かないようにする
  4. 【Rails】modelを作成する
  5. 【Blender】Bumpを使用した質感表現の方法

関連記事

 
  1. Ruby on Rails

    【Rails】ActiveStorageで添付ファイルを削除したいときは、purgeを使う

    動作確認するために、active_storageでアップロードした画…

  2. Ruby on Rails

    【Rails】migrationでカラムを追加・削除したい

    migrationファイルでよく使う記述。テーブルにカラムを追加・削…

  3. 【Rails】オブジェクトの中身をログに出力する

    Ruby on Rails

    【Rails】オブジェクトの中身をログに出力する

    オブジェクトの中身をデバッグしたりする時に便利出力結果をみやすい形に…

  4. Ruby on Rails

    【Rails】文字列からHTMLタグを取り除く方法

    Railsで、HTMLタグを取り除いて文字列を出力したい時があります。…

  5. Ruby on Rails

    【Rails】modelを作成する

    結論rails generateコマンドを使いましょ…

カレンダー

2025年4月
 123456
78910111213
14151617181920
21222324252627
282930  

最近の記事

  1. Blender

    【Blender】アニメーションでポーズを左右反転してコピペしたい時
  2. gitでファイル変更の一部をコミットする

    git

    git add -p でファイルの一部をコミットする【Git】
  3. Ruby on Rails

    【Rails】railsでIndex name ‘xxx’…
  4. Blender

    【Blender】起動時に強制終了してしまう問題
  5. Blender

    【Blender】拡張機能(アドオン)の基本的な使い方
PAGE TOP