常见种子数据是否存在于Rails的某个地方?

时间:2015-01-08 15:14:59

标签: ruby-on-rails ruby database

原始问题

为了减少db/seeds.rb中的输入量,我想知道是否存在我可以复制和粘贴的热门种子数据/代码,并根据需要进行少量编辑。

具体来说,这里有一些资源我想找到种子数据/代码:

引用:特定州内的所有城市

:所有美国州(并希望他们的缩写)

残疾:DSM-5中的所有残疾

zip-codes :特定州的所有邮政编码

示例:下面我必须输入自己才能播种种族表。理想的是,如果其他地方有人已经输入了它,我所要做的就是复制并粘贴它:

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

答案

以下是我目前用于播种的最佳流程:

  1. 查找原始数据(通常可以在互联网上找到)。将其复制并粘贴到文本文件中。您可能需要对其进行格式化以进行解析。国家数据示例:public/states.txt

    Florida|FL
    Georgia|GA
    Hawaii|HI
    Idaho|ID
    ...
    
  2. 打开文件,解析数据,然后播种: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 个答案:

答案 0 :(得分:3)

对于您拥有countries gem

的国家/地区

对于拥有cities gem

的城市

对于邮政编码,它可能更有问题,但您也可以将它们作为种子添加为残疾人。

有关播种,请按照SeedMigration中的说明查看this blog post

答案 1 :(得分:0)

为我提供假数据的最佳选择ffaker + factory_girl以生成记录

答案 2 :(得分:0)

我的解决方案:

查找原始数据(通常可以在互联网上找到)。将其复制并粘贴到文本文件中。您可能需要对其进行格式化以进行解析。状态数据示例: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