2011-03-17 102 views
17

我需要填寫 測試 開發數據庫的數據,例如從factorygirl,但我想從軌道控制檯使用它。
我如何將示例數據放入分貝中,以便我可以從控制檯獲取它並在那裏做一些測試?最好的方式來填補開發數據庫在軌道

+0

檢查http://stackoverflow.com/questions/1050047/how-to-run-rails-console-in-the-test-environment-and-load-test-helper-rb。希望它能幫助你 – 2011-03-17 18:32:20

+0

爲什麼你在測試數據庫中需要這個?不會僅僅爲你開發工作嗎?通常測試數據庫會被重置並重新創建,以至於無法預先填充任何大量的數據 – 2011-03-17 18:33:24

+0

編輯我的問題,當然我的意思是開發數據庫。 – methyl 2011-03-17 18:45:08

回答

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' ...文件後綴是錯誤的,耙子找不到這個任務! – zhongxiao37 2012-03-30 08:45:38

+0

這太棒了,謝謝分享。 – 2014-02-14 06:58:00

2

我製作了一個像Factory Girl一樣的gem 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設施或在您的夾具加載到你的開發環境。

+0

種子似乎是做這件事的好方法。 – methyl 2011-03-17 18:47:11

+0

我應該在哪裏放這個代碼?在'seeds.rb'或'sample_data.rb'中? – methyl 2011-03-17 19:04:13

相關問題