一部のファイル属性をインポートする rake タスクを実行していますが、各行に作成された文字列に何らかの改行文字 (例: /n
) が含まれていると思われるエラーが表示されます。
編集- 改行文字が問題であることが確認されています。
これは、私の CSV ファイルがどのように見えるかのサンプルです。
1|type1,type2|category1
2|type2|category1,category2,category3
3|type2,type4|category3,category8
そして、これに対処するための私のコードは次のとおりです。
namespace :data do
desc "import"
task :import => :environment do
file = File.open(Rails.root.join('lib/assets/data.csv'), 'r')
file.each do |line|
attrs = line.split("|")
foo = Model.find(attrs[0])
attrs[1].split(",").each do |type|
foo.add_type!(ModelType.find_by_name(type))
end
attrs[2].split(",").each do |category|
foo.categorize!(ModelCategory.find_by_name(category))
end
end
end
end
ModelType
とは、関数とで構築された との関係をModelCategory
持つ両方の別個のモデルです。:through
Model
Model.add_type!
Model.categorize!
を実行すると、最初の行の最後に到達rake data:import
するまで、すべて正常に動作します。category
それがどのカテゴリであるか、またはいくつのカテゴリに存在するかは関係ありませんattrs[2]
-最後のカテゴリでのみ失敗します。これは私が受け取るエラーです:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
これを修正する方法、またはこのエラーを回避する方法について何か考えはありますか?