Ruby on rails 重装工厂\女孩工厂

Ruby on rails 重装工厂\女孩工厂,ruby-on-rails,factory-bot,Ruby On Rails,Factory Bot,我希望当我在工厂中进行更改时,我可以在rails控制台中看到它们,而无需重新启动所有控制台 我发现了一些线路,并在不太了解情况下对其进行了测试,这对我来说并不清楚 FactoryGirl.reload 我还测试了: > FactoryGirl.factories.clear > FactoryGirl.find_definitions # also tested FactoryGirl.factories.find_definitions

我希望当我在工厂中进行更改时,我可以在rails控制台中看到它们,而无需重新启动所有控制台

我发现了一些线路,并在不太了解情况下对其进行了测试,这对我来说并不清楚

FactoryGirl.reload
我还测试了:

> FactoryGirl.factories.clear
> FactoryGirl.find_definitions # also tested FactoryGirl.factories.find_definitions
                               # but NoMethodError is raised
=> ActiveRecord::RecordNotFound: Couldn't find Address with ID=277 Torphy Squares

您也可以使用
重新加载
重新加载控制台环境,但不重新加载工厂。使用
FactoryGirl.reload
重新加载工厂定义。它(重新)从以下位置加载这些定义(请参见):

您提到的其他命令用于清除和加载定义
FactoryGirl.factories.clear
清除所有加载的工厂定义,而
FactoryGirl.find\u定义
从文件中重新加载所有定义

如果您使用的是rails,请确保使用
factory\u girl\u rails
gem。例如,当您定义了一个
factory:user
,您可以在控制台中将其与
FactoryGirl.build(:user)
FactoryGirl.create(:user)
一起使用。这将返回一个用户实例

如果这不起作用,请发布更多详细信息。

我正在使用。请参阅解决问题的更改差异:

# factories/building.rb, address is a string

- address    Faker::Address.street_address
+ address    { Faker::Address.street_address }

# factories/user.rb, email is a string

- email Faker::Internet.email
+ email { Faker::Internet.email }

然后
FactoryGirl.reload
起作用。

我通常只使用:
FactoryGirl.reload
对-这是FactoryGirl的一个大问题。在第一种情况下,Faker::Address只在工厂加载时计算一次,然后再也不会计算。因此,它是一个常数。在第二种情况下,每次使用代码块时都会对其进行求值,因此每次使用时代码块都会发生变化。第二种情况几乎总是你想要的,第一种情况只是一堆暴露的锋利的旋转刀片躺在那里等着伤害别人。这个答案也节省了我很多时间。为我服务的不是RTFM(请参阅《入门指南》中的动态属性)。重新加载!不起作用。什么意思?它会给工厂重新加载?例如,它是否将序列设置回平方1?
def self.reload reset\u configuration register\u default\u strategies register\u default\u callbacks find\u definitions end
# factories/building.rb, address is a string

- address    Faker::Address.street_address
+ address    { Faker::Address.street_address }

# factories/user.rb, email is a string

- email Faker::Internet.email
+ email { Faker::Internet.email }