我有一個txt文件全屬性,像這樣:耙數據導入任務並沒有更新正確
"12345", "1", "Kent"
"67890", "1", "New Castle"
我需要它來更新我的縣的模式,所以我有這個rake任務:
namespace :data do
desc "import data from files to database"
task :import => :environment do
file = File.open(File.join(Rails.root, "lib", "tasks", "counties.txt"), "r")
file.each do |line|
attrs = line.split(", ")
c = County.find_or_initialize_by_number(attrs[0])
c.state_id = attrs[1]
c.name = attrs[2]
c.save!
end
end
end
一切似乎很好,但是當我在控制檯檢查,以確保它是正確導入,我得到這個:
#<County id: 2, name: nil, number: 0, state_id: 0, created_at: "2013-08-04 17:44:11", updated_at: "2013-08-04 17:44:11">
我知道它實際上是在導入一些東西,因爲它已經創建了正確數量的County記錄,但實際上並沒有正確更新屬性。我確定我錯過了一些非常明顯的東西,但我找不到它!
您是否嘗試過在控制檯中執行這些步驟? – mathieugagne
after_save或類似的東西有任何回調嗎? – mathieugagne
剛剛發現了一些東西:當我將數據更改爲這樣讀取時:54109,5,「懷俄明州」即刪除整數週圍的引號,然後它會更新。所以我的問題是它讀取引號,然後不更新整數字段。有沒有更好的方法來編寫line.split? – krstck