Попробуйте объявить имя класса в описании фабрики.
FactoryBot.define do
factory :project, class: 'Project' do
...
Я создал фабрику в существующем проекте, используя тот же код, и получил точно такую же ошибку. Затем я изменил название фабрики на :projector
и снова получил ту же ошибку. Поэтому это не проблема защищенного имени.
Мои лучшие догадки:
1) Обязательно ли переносить тестовую базу данных после добавления проектов?
2) Вы уверены, что ваше приложение подключается к той же БД, что и в списке?
Причина, по которой я чувствую, может быть в том, что, если я добавлю в свою фабрику атрибут, которого нет в соответствующей таблице, ошибка будет выглядеть следующим образом:
NoMethodError: undefined method `name=' for #<Report:0x00007fc5bb065c10>
Таким образом, фабрика не может подтвердить символ, который вам дан, что, скорее всего, означает, что она не распознает его как константу / класс.