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】
  2. 【UE4】用語備忘録メモ
  3. 【Blender】MMDファイルをBlenderにImportするアドオン
  4. 【Blender】Bumpを使用した質感表現の方法
  5. 【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入

関連記事

 
  1. Ruby on Rails

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

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

  2. Ruby on Rails

    【Rails】RSpecのお作法メモ

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

  3. Ruby on Rails

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

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

  4. Ruby on Rails

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

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

  5. Ruby on Rails

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

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

カレンダー

2022年7月
 123
45678910
11121314151617
18192021222324
25262728293031

最近の記事

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

    git

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

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

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

    【WPテーマ自作】UnderScoresの導入
  5. Blender

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