在手动测试过程中时常出现需要提前置入数据的情况。
因为各种原因,在编码过程中可能造成测试数据的损坏,此时如果重新通过网站进行手动的数据录入则麻烦很多。另外在需要录入大量数据时也会遇到很多问题。所以在Rails里提供了seeds.rb可以用于数据生成。
如下例。此时我所做的事情是生成100条Blog与100条Resource,good与bad数等各种数据通过随机数生成。
在代码完成后运行rails db:reset
即可将数据录入数据库中。
由于数据库本身的原因,其运行速度较慢。这段代码大概需要跑数秒才能完成导入。
(1..100).each do |i|
good = rand(0..200)
bad = rand(0..200)
st = User.find(rand(1..4))
blogs = Blog.create(creator: st, title:"Blog "+i.to_s, type:'Blog', content: content, good: good, bad: bad)
blogs.good = rand(0..200)
blogs.bad = rand(0..200)
blogs.created_at = blogs.created_at - rand(0..1000)
course.keywords.each do |kw|
if rand(0..99)<25
blogs.keywords<<(kw)
end
end
blogs.courses<<(course)
blogs.save
st=User.find(rand(1..4))
resources = Resource.create(creator:st,title:"Resource "+i.to_s,type:'Resource',content:content,good:rand(0..200),bad:rand(0..200))
resources.good = rand(0..200)
resources.bad = rand(0..200)
resources.created_at = resources.created_at - rand(0..1000)
course.keywords.each do |kw|
if rand(0..99)<25
resources.keywords<<(kw)
end
end
resources.save
end