Существуют ли общие начальные данные где-нибудь для Rails?
Оригинальный вопрос
Чтобы уменьшить количество набрав db/seeds.rb
Мне интересно, есть ли где-нибудь популярные исходные данные / код, из которых я мог бы просто скопировать и вставить и внести незначительные изменения в случае необходимости.
В частности, вот некоторые ресурсы, для которых я хотел бы найти начальные данные / код:
цитирует: все города в определенном государстве
Штаты: все штаты США (и, надеюсь, их сокращения)
инвалидность: все инвалидности в DSM-5
почтовые индексы: все почтовые индексы для определенного штата
Пример: ниже я должен был набрать себя, чтобы заполнить таблицу этнических групп. Что было бы идеально, если бы кто-то уже набрал его, и все, что мне нужно было сделать, это скопировать и вставить его:
ethnicity_list = [
"American Indian/Alaska Native",
"Asian/Pacific Islander",
"Black/African American",
"Caucasian",
"Hispanic/Mexican American",
"Multiracial",
"Other"
]
ethnicity_list.each do |name|
Ethnicity.create(name: name)
end
Ответ
Вот текущий лучший процесс, который я использую для посева:
Найти необработанные данные (обычно их можно найти в Интернете). Скопируйте и вставьте его в текстовый файл. Возможно, вам понадобится немного отформатировать его для разбора. Пример для данных о состоянии:
public/states.txt
:Florida|FL Georgia|GA Hawaii|HI Idaho|ID ...
Откройте файл, проанализируйте данные и затем запустите его:
db/seeds.rb
:File.open('public/states.txt', 'r') do |file| file.read.each_line do |state| name, name_abbrev = state.chomp.split("|") State.create(name: name, name_abbrev: name_abbrev) end end
3 ответа
Мое решение:
Найти необработанные данные (обычно их можно найти в Интернете). Скопируйте и вставьте его в текстовый файл. Возможно, вам понадобится немного отформатировать его для разбора. Пример для данных о состоянии: public/states.txt:
Florida|FL
Georgia|GA
Hawaii|HI
Idaho|ID
...
Откройте файл, проанализируйте данные и затем заполните их: db/seed.rb:
File.open('public/states.txt', 'r') do |file|
file.read.each_line do |state|
name, name_abbrev = state.chomp.split("|")
State.create(name: name, name_abbrev: name_abbrev)
end
end
Для стран у вас есть жемчужина стран
Для городов у вас есть жемчужина города
Для почтовых индексов это может быть более проблематично, но вы также можете добавить их в качестве начальных чисел, так же, как и для инвалидов.
Для посева, пожалуйста, взгляните на SeedMigration, как описано в этом блоге.
Для меня лучший выбор ffaker для поддельных данных + factory_girl для создания записей