我有一个表,我要存储测量单位和相应的类别。例如,“杯子,体积”和“盎司,质量”。我所关心的只有大约12个测量值,我希望它们在数据库中而不需要手动输入,因为每当我想部署它或将代码移到某个地方时,我都希望它能够重新创建。
因此,我认为最好的方法是使用它们创建一个csv文件,然后使用rake :seed。但是我以前从来没有这样做过,所以有人能指导我如何创建这个csv,以及如何编写seeds.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发布于 2013-03-29 01:02:50
只需编写用于手动生成它们的代码并将其放到seeds.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-29 06:35:51
在seeds.rb目录中有一个名为db的文件。
您可以在其中添加默认数据,并且在执行rake db:seed时,将在数据库中填充该数据。
下面是一个例子,说明如何向它添加种子。
product_types = ProductType.create([
{:name => 'clock',:organisation_id => 1}
])https://stackoverflow.com/questions/15694774
复制相似问题