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】Bumpを使用した質感表現の方法
  2. 【Rails】findメソッドで連想配列から指定した値を検索する
  3. 【Blender】MMDファイルをBlenderにImportするアドオン
  4. 【Rails】railsでIndex name ‘xxx’…
  5. 【Blender】拡張機能(アドオン)の基本的な使い方

関連記事

 
  1. Ruby on Rails

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

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

  2. Ruby on Rails

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

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

  3. Ruby on Rails

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

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

  4. Ruby on Rails

    【Rails】modelを作成する

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

  5. Ruby on Rails

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

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

カレンダー

2022年1月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

最近の記事

  1. gitでファイル変更の一部をコミットする
  1. Blender

    【Blender】レンダリング結果を新規ウィンドウで開かないようにする
  2. gitでファイル変更の一部をコミットする

    git

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

    【Blender】アニメーションでポーズを左右反転してコピペしたい時
  4. Blender

    【Blender】MMDファイルをBlenderにImportするアドオン
  5. WordPress

    【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入
PAGE TOP