У меня есть задача rake, которая заполняет некоторые начальные данные в моем приложении rails. Например, страны, штаты, мобильные операторы и т. Д.Каков наилучший способ засевать базу данных в Rails?
Как я уже установил это, есть ли у меня куча операторов создания в файлах в/db/fixtures и задача грабли, которая их обрабатывает. Например, у одной модели есть темы. У меня есть файл theme.rb в/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"
Идея заключается в том, что я хочу установить некоторые акции тему для пользователей, чтобы начать с. У меня проблема с этим методом.
Установка идентификатора не работает. Это означает, что если я решит добавить тему, назовем ее «Red», тогда я просто хотел бы добавить оператор темы в этот файл прибора и вызвать задачу rake для повторной загрузки базы данных. Если я это сделаю, потому что темы относятся к другим объектам и изменениям их идентификатора при этой повторной инициализации, все ссылки нарушаются.
Вопрос в первую очередь, это хороший способ справиться с посевом базы данных? В предыдущем посте мне это рекомендовалось.
Если да, то как я могу жестко закодировать идентификаторы, и есть ли какие-то недостатки?
Если нет, то какой наилучший способ засеять базу данных?
Я по-настоящему ценю долгие и продуманные ответы, которые включают лучшие практики.
Не могли бы вы принять более свежий ответ? –
Просто сделал. Спасибо за напоминание – Tony