公共播种数据是否存在于 Rails 的某个地方?

Does Common Seeding Data Exist Somewhere for Rails?

原题

为了减少 db/seeds.rb 中的输入量,我想知道是否存在流行的种子 data/code 某处,我可以从中复制粘贴并根据需要进行小的编辑。

具体来说,这里有一些我想找到种子 data/code 的资源:

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

:美国所有州(希望是它们的缩写)

残疾:DSM-5

中的所有残疾

邮政编码:特定州的所有邮政编码

示例:为了播种 种族 table,我不得不在下面输入自己的内容。理想的情况是,如果有人已经在其他地方输入了它,而我所要做的就是复制并粘贴它:

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
    

对于您拥有 countries gem

的国家/地区

对于城市,您有 cities gem

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

要播种,请查看 SeedMigration as explained in this blog post

对我来说最好的选择ffaker for fake data + factory_girl生成记录

我的解决方案:

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