工厂女孩在生成器之后搞砸了factory.rb

时间:2015-10-29 10:10:28

标签: ruby-on-rails factory-bot

我有一个像这样的简单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

这发生在每一代模型之后。

另外,如果我在创建模型之前创建工厂,然后运行生成器来创建模型,则会出现类似“工厂已存在”之类的错误。所以我必须等到我在添加工厂之前生成模型。

这是一个错误吗?

我正在使用rails 4.2.4和factory_girl_rails 4.5.0。

修改:我尝试删除factories.rb文件中的所有内容,然后添加:

FactoryGirl.define do
end

尝试使用命令rails g factory_girl:model book生成模型工厂后,这就是我最终的结果:

FactoryGirl.define do  factory :book do

  end

end

1 个答案:

答案 0 :(得分: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重新生成工厂文件。