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

seeds.rbディレクトリにというファイルがありますdb

そこにデフォルトのデータを追加できます。実行するrake db:seedと、そのデータがデータベースに入力されます。

シードを追加する方法の例を次に示します。

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

それらを手動で生成するために使用するコードを記述し、それを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-29T01:02:50.937 に答える