我使用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