3

我有一张表,我将在其中存储测量单位和相应的类别。例如,“杯子,体积”和“盎司,质量”。我只有大约 12 个我关心的测量值,并且我希望它们在数据库中而不需要手动输入它们,因为无论何时我想部署它或将代码移动到某个地方,我都希望重新创建它。

所以,我认为最好的方法是用它们创建一个 csv 文件,然后使用 rake db:seed。但是我以前从来没有这样做过,所以有人可以指导我如何创建这个 csv,以及如何编写 seed.rb 文件来生成它吗?这是正确的方法吗?


解决方案:

#db/seeds.rb
require 'open-uri'

#Supply all the units of measurement to be used
Unit.delete_all
open("db/seeds/measurements.csv") do |measurements|
  measurements.read.each_line do |measurement|
    unit, uof = measurement.chomp.split(",")
    Unit.create!(:name => unit, :unit_of => uof)
  end
end
4

2 回答 2

1

只需编写用于手动生成它们的代码并将其放入种子.rb 中。您可以在该文件中使用普通的 ruby​​;所以要么只写普通create的,要么加载你存储的 csv,例如db/seeds/measurements.csv. 要获取该文件的路径,请使用Rails.root.join("db/seeds/measurements.csv").

例子:

File.open(Rails.root.join("db/seeds/measurements.csv")) do |f|
  # use f here
end
于 2013-03-29T01:02:50.937 回答
1

seeds.rb目录中有一个文件db

您可以在其中添加默认数据,当您执行时rake db:seed,该数据将填充到您的数据库中。

这是一个如何向其中添加种子的示例。

product_types = ProductType.create([
                                   {:name => 'clock',:organisation_id => 1}
])
于 2013-03-29T06:35:51.453 回答