Pregunta

Estoy probando los motores de Rails creando un motor de clasificados donde los usuarios pueden ver / publicar / responder a clasificados.

La aplicación principal contiene código para la autenticación de usuarios y perfiles, mientras que hay un motor que he creado que se ocupará de la funcionalidad de los clasificados.

Ahora quiero agregar algunos datos de muestra a la base de datos para el motor de clasificados. Así que creé un archivo de rake llamado 'sample_classifieds_data.rake' en 'vendor / plugins / classifieds / libers / lib / tasks' y agregué los archivos yml en 'vendor / plugins / classifieds / lib / tasks / sample_classifieds_data'

El código del archivo rake y un archivo yml de ejemplo se pueden encontrar aquí: http: //gist.github .com / 216776

Ahora el problema es que cuando ejecuto la tarea de rake, no se produce ningún error pero los valores no se completan en la base de datos.

¿Alguna idea? Por cierto, es un entorno de desarrollo y la base de datos es la base de datos de desarrollo.

Ejecuté una tarea de rake similar para poblar usuarios de muestra en la base de datos que funcionó. la ubicación de ese archivo de rastrillo 'sample_data.rake' se encontraba en 'lib / tasks'.

¿Fue útil?

Solución

Tu tarea se ve bien. Lo único que haría que su tarea falle de forma silenciosa es que el archivo que está pasando a Fixture.new no apunta a un archivo yml o csv.

Vuelva a verificar modificando la declaración de colocación para imprimir la ruta completa del archivo que importó, y compare lo que se imprime con la estructura de su directorio.

Por ejemplo, ¿las cosas fallarán de forma silenciosa si los archivos de tu dispositivo comienzan con una letra mayúscula? Categories.yml en lugar de categories.yml

Otros consejos

En los bordes de los rieles, puede usar la función rake db: seed para agregar datos a su base. Consulte el compromiso .

El uso es bastante simple.

Cree un archivo db / seeds.rb .
Y ponga el código que desee para sembrar su base de datos en él.

Por ejemplo:

Category.create!(:name => 'My Category')
Country.create!(:name => 'Cassoulet Land')

Y cuando quieras inicializar tu base de datos, puedes hacer un rake db: seed

Si, por cualquier motivo, no desea utilizar edge (que sería comprensible en un entorno de producción), puede usar complemento de Seed Fu , que hace el truco por ti.

La tarea db: seed se agregó en Rails 2.3.4. Así que no hay necesidad de correr ventaja.

http: //weblog.rubyonrails .org / 2009/9/4 / ruby-on-rails-2-3-4

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top