这是我的工厂女孩代码,每次我尝试生成评论时,告诉我“电子邮件已经被使用”,我重置了我的数据库,将spec_helper中的转换设置为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
解决方法
您需要使用序列来阻止创建具有相同电子邮件的用户对象,因为您必须对用户模型中的电子邮件的唯一性进行验证.
Factory.sequence :email do |n| “test#{n}@example.com” end Factory.define :user do |user| user.name "Testing User" user.email { Factory.next(:email) } user.password "foobar" user.password_confirmation "foobar" end
您可以在Factory Girl documentation阅读更多.