Рельсы посева столов городов и районов - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть приложение Rails, в котором есть стандартные строки городов и районов, которые я хочу инициализировать в своих таблицах при производстве и разработке. У меня есть данные в отдельных файлах в виде массива. Пример файла cairo_areas.txt содержит следующее:

["Downtown - Abdin",
"Downtown - Abu El Rish",
"Downtown - Ahmed Helmy",
"Downtown - Ahmed Maher",
"Downtown - Gamea' El Banat"]

Конечно, это только часть массива, которая может служить примером.

Теперь я попытался найти лучший способ инициализации в базе данных, но большинство ответов, которые я нашел, кажутся очень старыми. Короче говоря, два подхода, которые я нашел:

  1. Вставьте данные в seeds.rb. Недостатком является то, что большая часть данных существует для целей тестирования, и я пытаюсь отделить исходные данные от данных Faker.
  2. Подход 2 - создать задачу для вставки данных города и местности в базу данных, но большинство ответов, которые я нашел, очень старые в старых версиях Rails.

IХотите знать, как лучше всего вставить подлинные производственные данные в базу данных при инициализации?

1 Ответ

2 голосов
/ 01 ноября 2019

Согласно тому, что Марк сказал вам в своем ответе, существует третий вариант, который широко используется для добавления данных в производственные среды, который создает миграцию, которая создает эти записи или изменяет существующие.

В отношении seed.rb нужно сказать две вещи: этот файл должен содержать минимальный объем данных, для которого, в соответствии с бизнес-логикой вашей системы, система функционирует. Например, создание ролей, разрешений и другой информации, которую ваши системы не имеют смысла без нее. Кроме того, этот сценарий seed.rb должен быть идемпотентным, чтобы вы могли в любой момент повторно запустить seed.rb, не нарушая логику данных. Поэтому вы должны использовать Model.find, прежде чем делать Model.create в основном. В этом смысле вы можете продолжать добавлять информацию в этот начальный файл и запускать его в любое время.

Вы можете задаться вопросом, как выбрать миграцию или рейк-задачу. Я бы предложил вам использовать миграции, потому что при правильном использовании у вас есть возможность откатить эти изменения. Вариант, которого у вас нет при использовании задач.

Извините, если я был многословен, надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...