rails自动生成大量记录的方法

因为我们可能rails new了一个网站出来,但是里面没有测试数据,我们不能傻乎乎的在new.html.erb里面一个的手动输入吧?于是我们可以写一个小的脚本来帮助在数据库中插入大量数据;高版本的rails里new生成的网站中貌似已经没有script目录了,我们这里手动建立一个script目录,从而将脚本放进去。

具体脚本要怎么写,取决于你的model中结构如何,比如我的Order生成脚本类似如下:

Order.transaction do
  (1..100).each do |i|
    Order.create(name:"Customer #{i}",address:"#{i} Main Street",
      email:"customer-#{i}@example.com",pay_type:'Check')
  end
end

注意我把代码放在事务里面为的是如果发生错误不至于留下烂摊子,你也可以不用事务。该脚本文件名为make_orders.rb,那么问题来了:如何调用这个脚本呢?其实非常简单:

rails runner script/make_orders.rb

就可以啦。

顺便说一下:如果你想要插入少量数据可以在db/seeds.rb加入代码,如果你是在测试中想插入数据可以在test/fixtures中的*.yml文件中添加记录。

上一篇:[转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构


下一篇:css布局 - 工作中常见的两栏布局案例及分析