У меня есть файл .txt полного атрибутов, как так:Рек не обновляет
"12345", "1", "Kent"
"67890", "1", "New Castle"
Мне нужно это, чтобы обновить свою модель County, и поэтому у меня есть эти грабли задача:
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">
I знаете, что он фактически импортирует что-то, потому что он создал точное количество записей графства, но на самом деле он не обновляет атрибуты правильно. Я уверен, что упускаю что-то очень очевидное, но я не могу его найти!
Вы пытались сделать эти шаги в консоли? – mathieugagne
Есть ли у вас обратные вызовы after_save или что-то подобное? – mathieugagne
Просто что-то обнаружил: когда я меняю данные следующим образом: 54109, 5, «Вайоминг», т. Е. Удаляет кавычки вокруг целых чисел, тогда он будет обновляться. Поэтому моя проблема в том, что он читает кавычки, а затем не обновляет целочисленные поля. Есть ли лучший способ написать line.split? – krstck