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. 【Rails】findメソッドで連想配列から指定した値を検索する
  2. git add -p でファイルの一部をコミットする【Git】
  3. 起動時の設定をカスタムする【Blender】
  4. 【Rails】railsでIndex name ‘xxx’…
  5. 【Blender】Bumpを使用した質感表現の方法

関連記事

 
  1. Ruby on Rails

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

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

  2. Ruby on Rails

    【Rails】modelを作成する

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

  3. Ruby on Rails

    【Rails】レコードが保存済みか確認するpersisted?メソッド

    レコードが保存されているかどうかでUIの表示を切り替えたり、保存されて…

  4. Ruby on Rails

    【Rails】development? production? 開発環境ごとに処理を切り分けたい時

    Railsで、開発環境ごとに処理を切り替えたい時の方法を紹介します。ま…

  5. Ruby on Rails

    【Rails】railsでIndex name ‘xxx’ on table…

    railsで、dbを変更するためにmigrationを実行した際、in…

カレンダー

2024年9月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

最近の記事

  1. Ruby on Rails

    【Rails】modelを作成する
  2. Blender

    【UE4】用語備忘録メモ
  3. Ruby on Rails

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

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

    git

    git add -p でファイルの一部をコミットする【Git】
PAGE TOP