在Rails中填充开发数据库的最佳方法

17

我需要用数据填充测试开发数据库,比如用factorygirl,但我想在rails控制台中使用它。
我该如何将示例数据放入数据库以便从控制台获取并进行一些测试?


请查看 https://dev59.com/wnNA5IYBdhLWcg3wNa-U 。希望对您有所帮助。 - Sergey Kishenin
为什么你需要在测试数据库中放置这个?只把它放在开发环境中不行吗?通常情况下,测试数据库会被反复重置和重建,因此事先填充大量数据是没有意义的。 - Will Ayd
修改了我的问题,我确实是指开发数据库。 - methyl
4个回答

18

Faker也是一个不错的解决方案。

这是我的lib/tasks/sample_data.rake文件的样子。 我使用rake db:populate运行它。

创建50个带有随机信息的条目。

require 'faker'

namespace :db do
  desc "Fill database with sample data"
  task :populate => :environment do
    Rake::Task['db:reset'].invoke
    50.times do |n|
      name  = Faker::Company.name
      year = 1900+rand(111)
      rating = 1+rand(10)
      watched = (1 == rand(2) ? true : false)
      imdb_id = rand(1000000)
      Movie.create!(:name => name,
                    :year => year,
                    :rating => rating,
                    :watched => watched,
                    :imdb_id => imdb_id)
    end
  end
end

6
应该是lib/tasks/sample_data.rake...文件后缀错误,rake无法找到这个任务! - zhongxiao37

2

我制作了一个名为test_dummy的宝石,它类似于Factory Girl,用于定义大量虚假数据。当正确配置后,您可以像这样操作:

# Create 100 fake companies
100.times { Company.create_dummy }

# Create a single fake company on-demand
fake_company = Company.create_dummy

另一种选择是使用 db/seeds.rb 工具或将测试数据加载到开发环境中。

我应该把这段代码放在哪里?是放在 seeds.rb 还是 sample_data.rb 中? - methyl
@methyl seeds.rb 是为了你的应用程序正常运行所需的真实数据。例如,一份邮政编码、州、国家、税务规则或其他信息的清单。 - iconoclast
@iconoclast 在七年后的今天回复,迟到总比不来好,是吧? - tadman
2
@tadman:时间选择很有趣...但我从未认为StackOverflow的问题会因时间而变得无关紧要——只有当技术变化使问题变得无关紧要时才会如此——所以我会说“迟到总比不来得好”,因为没有让我的评论“迟到”(就好像我应该在7年前写这个评论一样)。 - iconoclast
@iconoclast 只是半开玩笑。额外的解释总是受欢迎的,因为它可能会帮助其他人。 - tadman

2

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接