मेरे पास एक रेक कार्य है जो मेरे रेल एप्लिकेशन में कुछ प्रारंभिक डेटा को पॉप्युलेट करता है। उदाहरण के लिए, देश, राज्य, मोबाइल वाहक, आदि।
जिस तरह से मैंने इसे अभी स्थापित किया है, क्या मेरे पास फाइलों में / db / जुड़नार में बयान बनाने और उन्हें संसाधित करने वाले एक रेक कार्य का एक गुच्छा है। उदाहरण के लिए, मेरे पास एक मॉडल थीम है। मेरे पास एक ऐसी थीम है। फ़ाइल / db / जुड़नार जो इस तरह दिखती है:
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"
यहां विचार यह है कि मैं उपयोगकर्ताओं को शुरू करने के लिए कुछ स्टॉक थीम स्थापित करना चाहता हूं। मुझे इस विधि से समस्या है।
आईडी सेट करने से काम नहीं चलता। इसका मतलब है कि अगर मैं एक थीम जोड़ने का फैसला करता हूं, तो इसे 'रेड' कहते हैं, तो मैं बस इस फिक्सेटर फ़ाइल में थीम स्टेटमेंट जोड़ना चाहूंगा और डेटाबेस को फिर से शुरू करने के लिए रेक कार्य को कॉल करूंगा। यदि मैं ऐसा करता हूं, क्योंकि थीम अन्य वस्तुओं से संबंधित है और इस पुन: आरंभीकरण पर उनकी आईडी के परिवर्तन, सभी लिंक टूट गए हैं।
मेरा सवाल सबसे पहले यह है कि क्या डेटाबेस को सीडिंग करने का यह एक अच्छा तरीका है? एक पिछली पोस्ट में, यह मेरे लिए सिफारिश की गई थी।
यदि हां, तो मैं आईडी को हार्ड कोड कैसे दे सकता हूं, और क्या इसमें कोई डाउनसाइड है?
यदि नहीं, तो डेटाबेस को बीज करने का सबसे अच्छा तरीका क्या है?
मैं वास्तव में लंबे और सोचे हुए उत्तरों की सराहना करूंगा जो सर्वोत्तम प्रथाओं को शामिल करते हैं।