我使用db:populate将一些示例数据预加载到我的rails项目中。举例来说,我使用下面的代码来填充数据库:使用db:填充导致零例外
require 'faker'
namespace :db do
task :populate => :environment do
Rake::Task['db:reset'].invoke
100.times do |u|
User.create!(
:name => Faker::Name.name,
:email => Faker::Internet.email
)
end
puts "The count of user(s) is #{User.all.count}"
User.all.each do |u|
# Add some more info based for each user
end
end
end
不过,我得到的是一个错误,当我运行“耙分贝:填充”。我得到:
rake aborted!
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
我上呼吁,我打印出用户的数量看跌此错误。 如果我将100.times降低到约10倍,则填充工作正常,并且对User.all.count的调用以正确的值10作出响应。 我可以猜到的最好的情况是,调用“faker “会被重载并且尚未返回导致nil对象的值。但是,也许populate正试图将其作为单个数据库事务来运行,并且会超载一些缓冲区。
有没有办法将插入“刷新”到数据库中,以便每个事务都写入数据库或暂停而“faker”响应,因此我可以创建更大的数据集来处理?
Thanks
Steve Woolley
[email protected]
感谢您的答复。我查了一下,没有冲突。但我会认为,如果发生冲突,甚至连一次都无法运行。就目前来看,我可以运行这10次,但没有更大的集合。 – 2010-12-19 17:59:54