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

时间:2011-03-17 18:27:09

标签: ruby-on-rails

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

我制作了一个像工厂女孩一样的宝石test_dummy来定义大量假数据。正确配置后,您可以执行以下操作:

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

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

另一种方法是使用db/seeds.rb工具或将您的灯具加载到您的开发环境中。

答案 2 :(得分:2)

作为railstutorial.org计划的一部分,Michael Hartl对此主题进行了精彩的介绍。

他使用名为Factory Girl的宝石,旨在简化使用样本数据填充数据库的过程。

E.G。

http://ruby.railstutorial.org/chapters/user-microposts#sec:sample_microposts

https://github.com/railstutorial/sample_app/blob/master/lib/tasks/sample_data.rake

答案 3 :(得分:1)

它只是在Rails控制台中还是只是'来自控制台'?

我喜欢使用Thor或Rake任务来做到这一点。而不是工厂女孩,我使用机械师。

您可能想查看此答案

Rails: Good Rspec2 example usage? (Also: Cucumber, Pickle, Capybara)