2015-10-29 4 views
0

У меня есть простой factories.rb вроде этого:Factory Girl щурит factories.rb после генераторов

FactoryGirl.define do 
    factory :book_category do 
    sequence(:name) { |n| "Cateogry #{n}" } 
    end 

    factory :book do 
    sequence(:title) { |n| "Book #{n}" } 
    end 
end 

После того как я запустить модель генератора, как rails g model categorization book:references category:references мой файл заканчивается так:

FactoryGirl.define do factory :categorization do 
    book nil 
category nil 
    end 

    factory :post_category do 
    sequence(:name) { |n| "Cateogry #{n}" } 
    end 

    factory :book do 
    sequence(:title) { |n| "Book #{n}" } 
    end 
end 

Этот происходит после каждого поколения модели.

Кроме того, если я создаю фабрику перед созданием модели, а затем запустите генератор для создания модели, он даст сообщение об ошибке, например, «фабрика уже существует». Поэтому я должен подождать, пока я не сгенерирую модель до добавления фабрики.

Это ошибка?

Я использую рельсы 4.2.4 и factory_girl_rails 4.5.0.

Edit: Я попытался удалить все из файла factories.rb и просто добавив это:

FactoryGirl.define do 
end 

После попытки создать модель завода, используя команду rails g factory_girl:model book, это то, что я закончил с:

FactoryGirl.define do factory :book do 

    end 

end 
+0

Может ли это иметь какое-то отношение к концовки строк в вашем файле? Похоже, что он добавляет правильный код, но отступы и разрывы строк установлены неправильно. –

+0

@ roman-roman Я считал это, но у меня есть файл ASCII с концами LF line на OSX. Это должно быть хорошо. – hattenn

ответ

0

Я думаю, что это имеет какое-то отношение к пробельным символам, присутствующим в файле factory.rb. Как это исходит от источника (https://github.com/thoughtbot/factory_girl_rails/blob/master/lib/generators/factory_girl/model/model_generator.rb#L46), он вставляет код после символа «\ n».

Удостоверьтесь, что у вас нет странных символов пробелов, возможно, даже регенерируйте файл ваших фабрик с помощью rails g factory_girl:model.

+0

Я удалил все из 'factories.rb' и попробовал команду генератора, которую вы включили, она говорит' insert spec/factories.rb', но ничего не добавляет к этому файлу. Затем я попытался удалить этот файл, и на этот раз он автоматически добавил его в 'spec/factories/my_model.rb', который не является поведением, которое я хочу. Мне это кажется ошибкой. – hattenn