0

我有一个这样的工厂设置:

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 表......它是空的,所以不是那个!还在找。

4

1 回答 1

0

输出看起来像一个哈希。u根据最新的 FactoryGirl,您不需要在定义块中使用参数- 也许您的旧仓库使用了旧语法。

它应该如下所示:

factory :user do
  sequence(:name) { |n| "User #{n}"}
  sequence(:email) { |n| "user#{n}@example.com"}
  password "password"
end
于 2013-06-10T17:03:33.553 回答