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】MMDファイルをBlenderにImportするアドオン
  2. 【Rails】modelを作成する
  3. 【Rails】findメソッドで連想配列から指定した値を検索する
  4. 【Blender】Bumpを使用した質感表現の方法
  5. 【WPテーマ自作】UnderScoresの導入

関連記事

 
  1. railsをproductionモードで実行する

    Ruby on Rails

    【Rails】railsをproductionモードで実行する

    結論--environmentオプションを使用します。…

  2. Ruby on Rails

    【Rails】selectメソッドで特定の条件を満たす要素を取得する

    selectは、配列に対してブロック内の条件を評価し、真になって要素を…

  3. Ruby on Rails

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

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

  4. Ruby on Rails

    【Rails】RSpecのお作法メモ

    RSpecを書く機会が増えてきたので、記法の備忘録として記事にします…

  5. Ruby on Rails

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

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

カレンダー

2026年7月
 12345
6789101112
13141516171819
20212223242526
2728293031  

最近の記事

  1. Blender

    【UE4】用語備忘録メモ
  2. HTML&CSS

    【CSS】おしゃれなラジオボタンを作る
  3. Ruby on Rails

    【Rails】selectメソッドで特定の条件を満たす要素を取得する
  4. Ruby on Rails

    【Rails】railsでIndex name ‘xxx’…
  5. WordPress

    【WPテーマ自作】UnderScoresの導入
PAGE TOP