Скрипт Rake не работает после изменения столбца на datetime в Rails 3 - PullRequest
0 голосов
/ 09 февраля 2012

Я только что изменил столбец (называемый временем) с t.string на t.datetime, а затем удалил и заново создал базу данных и запустил миграцию.

У меня есть сценарий, запускаемый каждую минуту, который извлекает информацию с удаленного веб-сайта, а затем добавляет информацию в новые записи, основываясь на столбце времени, который я настроил как дату-время, а не как строку.

# Add each row to a new call record
page = agent.page.search("table tbody tr").each do |row|
next if (!row.at('td'))
time, source, destination, duration = row.search('td').map{ |td| td.text.strip }
call = Call.find_or_create_by_time(time)
call.update_attributes({:time => time, :source => source, :destination => destination, :duration => duration})
end

Поскольку изменение временного столбца на целое, сценарий, похоже, вообще не импортирует какую-либо информацию. Я задавался вопросом, есть ли дополнительный шаг, который я должен сделать, чтобы сделать эту работу снова?

Моя схема выглядит так:

create_table "calls", :force => true do |t|
    t.string   "source"
    t.string   "duration"
    t.datetime "time"
    t.string   "destination"
    t.string   "recording"
    t.string   "cost"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

1 Ответ

3 голосов
/ 09 февраля 2012

В этой части

time, source, destination, duration = row.search('td').map{ |td| td.text.strip }
call = Call.find_or_create_by_time(time)

вы получаете time переменную в виде строки и пытаетесь find_by ее.Я думаю что-то вроде

call = Call.find_or_create_by_time(Time.parse(time))

должно сработать

...