我有一个像这样的工厂设置:
require 'faker'
FactoryGirl.define do
factory :user do |u|
u.sequence(:name) { |n| "User #{n}"}
u.sequence(:email) { |n| "user#{n}@example.com"}
u.password "password"
end
factory :student_group do |student_group|
sequence(:name) {|n| "class #{n}"}
end
end
填充我的数据库的rake任务:
require 'factory_girl_rails'
namespace :db do
desc "Fill db with sample data"
task :populate, :environment do
# reset the database
puts "Resetting the database"
Rake::Task['db:reset'].invoke
# create 100 users
puts "Creating users"
new_users = FactoryGirl.create_list :user, 100
#create 3 student_groups for each user
puts "Creating student groups for each user"
new_users.each do |u|
FactoryGirl.create_list :student_group, 3, :user_id => u.id
end
# success message
puts "The database has been populated successfully"
end
end
它运行正常,但所有电子邮件字段都填充了这个:---
- user3@example.com
- User 3
它只是工作 - 我不确定发生了什么变化,实际上我从我的github存储库复制并粘贴了一些东西(这让我觉得错误在其他地方) - 可能导致电子邮件形成这样的?如果您需要更多文件,请问,我很困惑可能会遇到什么问题。
编辑以确保错误不是来自数据库中遗留的东西,我做了rake db:reset并再次检查了db表...它是空的,所以不是这样!还在寻找。
答案 0 :(得分:0)
输出看起来像一个哈希。根据最新的FactoryGirl,您不需要在定义块中使用参数u
- 也许您的旧仓库使用旧语法。
它应该是这样的:
factory :user do
sequence(:name) { |n| "User #{n}"}
sequence(:email) { |n| "user#{n}@example.com"}
password "password"
end