2012-02-07 26 views
5

Tôi đã tạo dữ liệu thử nghiệm lần đầu tiên bằng cách cố gắng điền cơ sở dữ liệu của mình bằng một tập lệnh đơn giản tạo ra số lượng bản ghi đầy đủ cho các mô hình của tôi cho tất cả các phụ thuộc (đặc biệt đa hình).Làm thế nào để ngẫu nhiên đúng cách dữ liệu với seed.rb sử dụng Factory Girl và random_data?

Đây là tôi seeds.rb

require 'factory_girl_rails' 

50.times do 

    @user = FactoryGirl.create(:user) 
    FactoryGirl.create(:contact, :user => @user) 

    @question = FactoryGirl.create(:question, :user => @user) 

    FactoryGirl.create(:user_answer, :question => @question, :authorable => @user) 

    @contact = FactoryGirl.create(:contact, :user => @user) 
    FactoryGirl.create(:contact_answer, :question => @question, :authorable => @contact) 

end 

Như một ví dụ, đây ist nhà máy question:

FactoryGirl.define do 
    factory :question do 
    title  "What is the best place to travel in " + Random.country + "?" 
    body  Random.paragraphs(2) 
    association :user, :method => :build 
    end 
end 

Trong khi lớp Random không sản xuất một ngẫu nhiên hạn, thời hạn mà vẫn giữ nguyên cho tất cả các trường hợp đã được tạo. Trong trường hợp này tôi sẽ nhận được 50 câu hỏi, nói, "Nơi tốt nhất để đi du lịch ở Tây Ban Nha là gì?" và hai đoạn văn bản giống nhau cho mỗi đoạn văn.

Tôi đang thiếu gì?

+0

'seeds.rb' chỉ nên được sử dụng để thêm yêu cầu dữ liệu 'tĩnh' cơ sở dữ liệu , không phải để 'fixture' nó. Để tạo dữ liệu cơ sở để bạn có thể tự kiểm tra ứng dụng khi phát triển, bạn nên tạo một tác vụ rake (chúng tôi có 'rake db: populate') – fuzzyalej

+0

Cảm ơn bạn đã chỉ ra điều đó. Bạn có mong đợi hành vi thay đổi, mặc dù, nếu tôi chạy giống nhau trong một nhiệm vụ riêng biệt? –

Trả lời

3

Vì vậy, tôi không chắc chắn nơi lớp học Random sẽ đến từ đây. Nhưng tôi luôn sử dụng số Faker gem cho công cụ này.

Nó tên, email, các thành phố, số điện thoại: như thế này:

Faker::Name.name 
Faker::Address.uk_country 
Faker::Lorem.paragraph 

check it out

+0

FYI @Matthew: [Đây là nơi mà lớp Random xuất phát] (https://github.com/tomharris/random_data). –

Các vấn đề liên quan