这是我的factory girl代码,每次我尝试生成评论时,它都告诉我“Email has already been taken”,我已经重置了我的数据库,将spec_helper中的transition设置为true,但仍然没有解决这个问题。我是新手,我是否使用了错误的关联?谢谢!
Factory.define :user do |user|
user.name "Testing User"
user.email "test@example.com"
user.password "foobar"
user.password_confirmation "foobar"
end
Factory.define :course do |course|
course.title "course"
course.link "www.umn.edu"
course.sections 21
course.description "test course description"
course.association :user
end
Factory.define :review do |review|
review.title "Test Review"
review.content "Test review content"
review.association :user
review.association :course
end
6条答案
按热度按时间bpsygsoo1#
我知道这是一个很老的问题,但是公认的答案已经过时了,所以我想我应该发布新的方法。
来源:文件
它相当简单,这很好。
iyfamqjs2#
您需要使用序列来防止创建具有相同电子邮件的用户对象,因为您必须在User模型中验证电子邮件的唯一性。
您可以在Factory Girl documentation中阅读更多内容。
cbwuti443#
除了上面的答案,您可以添加
gem 'faker'
到您的宝石文件,它将提供独特的电子邮件。cld4siwp4#
sequence
提供真正独特的电子邮件和Faker
提供随机密码。kr98yfug5#
由于某种原因,
password_confirmation
字段对我不起作用。起作用的是:请注意,如果您没有使用Faker,您可以使用像`password {“password”}这样简单的东西来代替那一行。
zu0ti5jz6#
1.你需要添加一个序列
1.(可选)如果你经常在rails控制台中执行工厂,你可以添加一些随机性
Random.hex(4)
,否则你会遇到同样的问题。