2012-02-07 11 views
5

Proporcioné datos de prueba generando un primer intento tratando de poblar mi base de datos con un script simple que crea un número suficiente de registros para mis modelos que representan todas las dependencias (especialmente el polimorfismo).¿Cómo aleatorizar correctamente los datos con seed.rb usando Factory Girl y random_data?

Esta es mi 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 

A modo de ejemplo, aquí no está en la question fábrica:

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 

Mientras la clase Random sí produce uno término aleatorio, ese término sigue siendo el mismo para todas las instancias creadas En este caso, recibiría 50 preguntas de, por ejemplo, "¿Cuál es el mejor lugar para viajar en España?" y los dos párrafos de texto idénticos para cada uno.

¿Qué me estoy perdiendo?

+0

'seeds.rb' sólo debe utilizarse para añadir datos 'estáticos' a la base de datos necesaria , no para 'fijarlo'. Para crear datos base para que pueda probar manualmente la aplicación en desarrollo, debe crear una tarea de rake (tenemos 'rake db: populate') – fuzzyalej

+0

Gracias por señalarlo. Sin embargo, ¿esperaría que el comportamiento cambiara si tuviera que ejecutar el mismo en una tarea separada? –

Respuesta

3

Así que no estoy seguro de dónde viene la clase Random. Pero siempre usé el Faker gem para esto.

No nombres, correos electrónicos, ciudades, números de teléfono: de esta manera:

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

a verlo

+0

FYI @Matthew: [Aquí es donde proviene la clase aleatoria] (https://github.com/tomharris/random_data). –

Cuestiones relacionadas