假设我有一个名为
如果我第一次调用
我目前使用一个简单的助手函数在创建工厂之前搜索数据库中是否存在重复数据,并通过该助手函数调用任何我创建的工厂。
虽然这种方法可行,但并不十分优雅。考虑到我认为这个问题很常见,我猜想可能有更好的解决方案。那么,在factory girl中是否有内置的方法可以
答案:
假定我有一个模型
user
的模型,它在email
字段上具有唯一性限制。如果我第一次调用
Factory(:user)
时一切正常,但如果我第二次调用它,它将会失败并显示"entry already exists"错误。我目前使用一个简单的助手函数在创建工厂之前搜索数据库中是否存在重复数据,并通过该助手函数调用任何我创建的工厂。
虽然这种方法可行,但并不十分优雅。考虑到我认为这个问题很常见,我猜想可能有更好的解决方案。那么,在factory girl中是否有内置的方法可以
return_or_create
工厂,而不是只是使用create()
呢?如果没有,大多数人如何避免他们的工厂出现重复项?答案:
假定我有一个模型
用户(user)
,在电子邮件(email)
字段上具有唯一性约束条件。如果我第一次调用 Factory(:user)
时,所有都很好,但如果我第二次调用它,它会失败并显示“条目已经存在”的错误。我目前使用一个简单的帮助程序在创建工厂之前搜索数据库中是否存在现有条目…并通过该帮助程序调用我创建的任何工厂。它可行,但并不完美。考虑到此问题的普遍性,我猜测有更好的解决方案。那么,factory girl是否有内置的方法来返回或创建
工厂,而不仅仅是继续使用create()
呢?如果没有,大多数人是如何避免他们的工厂创建重复条目的?
RAILS_ENV=test bin/rake db:drop RAILS_ENV=test bin/rake db:create RAILS_ENV=test bin/rake db:migrate
这样可以清除所有旧数据。希望这能帮到 @someoneinomaha。 - Joel