約 2K のレコードをモデルにシードしようとしていますが、これまでにさまざまな方法をすべて使用してみました (より高速な csv、fast_seeder、およびrailscasts ep )。これはかなりシンプルであるべきだと思います。CSV ファイルにすべてのデータがあり、モデルはすでにセットアップされており、シードする準備ができています。
これまでに機能したのは、RailsCasts エピソードで示されたものだけです。私は自分の属性にこのコードをプラグインし、最初の行のみ (2K のうち) をシードしました。それだけです:
Country.delete_all
open("#{Rails.root}/path_to_my_file") do |models|
models.read.each_line do |model|
column_1, column_2, column_3, column_4 = model.chomp.split(",")
Model.create!(:attr_1 => column_1, :attr_2 => column_2, ...etc)
end
end
次にFasterCSV
、他の質問のいくつかに基づいて使用してみましたがfastercsv
、Ruby の最新リリースに既に含まれているというエラーがたくさん表示され、理解できなかったようです (これは私のせいかもしれませんが、私はそれをうまくレイアウトする良いSOの質問を見つけることができませんでした)。
最後に、Fast_Seeder
いくつかの可能性があるようで、すべてのエントリを認識しましたが、次のエラーを受け取ったため、それらのいずれもモデルに保存しませんでした:
SQLite3::SQLException: too many terms in compound SELECT:(all my columns)
とにかく、これは十分に単純であるべきだと思います。2K のエントリを含む CSV と、シードする必要がある空のモデルがあります。これを行うための最良の方法は非常に高く評価されます、ありがとう!