Mam zadanie rake, które wypełnia pewne początkowe dane w mojej aplikacji rails. Na przykład kraje, stany, operatorzy komórkowi itp.
Sposób, w jaki to teraz skonfigurowałem, jest taki, że mam kilka instrukcji create w plikach w / db / fixtures i zadanie rake, które je przetwarza. Na przykład jeden model, który mam, to motywy. Mam plik theme.rb w / db / fixtures, który wygląda następująco:
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"
Chodzi o to, że chcę zainstalować kilka motywów stockowych dla użytkowników na początek. Mam problem z tą metodą.
Ustawienie ID nie działa. Oznacza to, że jeśli zdecyduję się dodać motyw, nazwijmy go „czerwonym”, chciałbym po prostu dodać instrukcję motywu do tego pliku ustawień i wywołać zadanie rake, aby ponownie umieścić bazę danych. Jeśli to zrobię, ponieważ motywy należą do innych obiektów i ich id zmienia się po ponownej inicjalizacji, wszystkie linki są zepsute.
Moje pytanie brzmi przede wszystkim: czy to dobry sposób na obsadzenie bazy danych? W poprzednim poście polecono mi to.
Jeśli tak, jak mogę na stałe zakodować identyfikatory i czy są jakieś wady?
Jeśli nie, jaki jest najlepszy sposób zapełnienia bazy danych?
Naprawdę docenię długie i przemyślane odpowiedzi, które zawierają najlepsze praktyki.