J'ai une tâche rake qui remplit certaines données initiales dans mon application rails. Par exemple, des pays, des états, des opérateurs de téléphonie mobile, etc.
La façon dont je l'ai mis jusqu'à maintenant, j'ai un tas de créer des instructions dans les fichiers de /db/fixtures et une tâche rake qui les traite. Par exemple, un modèle que j'ai est de thèmes. J'ai un thème.rb fichier dans /db/luminaires qui ressemble à ceci:
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"
L'idée ici est que je veux installer un stock de thèmes pour que les utilisateurs commencent avec. J'ai un problème avec cette méthode.
Réglage de l'ID ne fonctionne pas. Cela signifie que si je décide d'ajouter un thème, nous allons l'appeler "Rouge", alors je voudrais simplement ajouter le thème de la déclaration de ce match de fichier et l'appel de la tâche rake pour réensemencer la base de données. Si je le fais, parce que les thèmes qui appartiennent à d'autres objets et leurs id de changements lors de cette ré-initialisation, tous les liens sont rompus.
Ma question est tout d'abord, est-ce un bon moyen de traiter l'ensemencement d'une base de données? Dans un précédent post, cela m'a été recommandé.
Si oui, comment puis-je coder en dur l'IDs, et quels sont les inconvénients?
Si non, quel est le meilleur moyen de semences de la base de données?
Je vais vraiment apprécier longtemps pensé et réponses qui intègrent les meilleures pratiques.
Merci!!!!