Tengo una tarea de rake que llena algunos datos iniciales en mi aplicación de rieles. Por ejemplo, países, estados, operadores de telefonía móvil, etc.
La forma en que lo tengo configurado ahora es que tengo un montón de declaraciones de creación en archivos en / db / fixtures y una tarea de rake que las procesa. Por ejemplo, un modelo que tengo son los temas. Tengo un archivo theme.rb en / db / fixtures que se ve así:
Theme.delete_all
Theme.create(:id => 1, :name=>'Lite', :background_color=>'0xC7FFD5', :title_text_color=>'0x222222',
:component_theme_color=>'0x001277', :carrier_select_color=>'0x7683FF', :label_text_color=>'0x000000',
:join_upper_gradient=>'0x6FAEFF', :join_lower_gradient=>'0x000000', :join_text_color=>'0xFFFFFF',
:cancel_link_color=>'0x001277', :border_color=>'0x888888', :carrier_text_color=>'0x000000', :public => true)
Theme.create(:id => 2, :name=>'Metallic', :background_color=>'0x000000', :title_text_color=>'0x7299FF',
:component_theme_color=>'0xDBF2FF', :carrier_select_color=>'0x000000', :label_text_color=>'0xDBF2FF',
:join_upper_gradient=>'0x2B25FF', :join_lower_gradient=>'0xBEFFAC', :join_text_color=>'0x000000',
:cancel_link_color=>'0xFF7C12', :border_color=>'0x000000', :carrier_text_color=>'0x000000', :public => true)
Theme.create(:id => 3, :name=>'Blues', :background_color=>'0x0060EC', :title_text_color=>'0x000374',
:component_theme_color=>'0x000374', :carrier_select_color=>'0x4357FF', :label_text_color=>'0x000000',
:join_upper_gradient=>'0x4357FF', :join_lower_gradient=>'0xffffff', :join_text_color=>'0x000000',
:cancel_link_color=>'0xffffff', :border_color=>'0x666666', :carrier_text_color=>'0x000000', :public => true)
puts "Success: Theme data loaded"
La idea aquí es que quiero instalar algunos temas de stock para que los usuarios comiencen. Tengo un problema con este método.
Configurar el ID no funciona. Esto significa que si decido agregar un tema, llamémoslo 'Rojo', entonces simplemente me gustaría agregar la declaración del tema a este archivo de accesorio y llamar a la tarea rake para reiniciar la base de datos. Si hago eso, debido a que los temas pertenecen a otros objetos y su identificación cambia en esta reinicialización, todos los enlaces se rompen.
Mi pregunta es, en primer lugar, ¿es esta una buena manera de manejar la siembra de una base de datos? En un post anterior me lo recomendaron.
Si es así, ¿cómo puedo codificar las ID? ¿Hay alguna desventaja?
Si no es así, ¿cuál es la mejor manera de sembrar la base de datos?
Realmente agradeceré las respuestas largas y bien pensadas que incorporen las mejores prácticas.