Данные Rails Seed не загружаются должным образом после миграции

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

Шаги:

  1. Добавьте два столбца с помощью миграции
  2. Сделайте их attr_accessible в модели
  3. Замените старый файл CSV новым файлом CSV.
  4. Измените файл seed.rb, чтобы добавить новые данные.
  5. Запустить rake db:seed

Сид.рб

require 'csv'

Model.delete_all
CSV.foreach("#{Rails.root}/lib/data/model.csv") do |row|
   Model.create!(:model_number => row[0], :areq => row[1], :length => row[2], :width => row[3], :depth => row[4], :material => row[5], :frame => row[6], :edge => row[7], :tubes => row[8], :tube_length => row[9])
end

Схема.rb

create_table "models", :force => true do |t|
  t.string   "model_number"
  t.float    "areq"
  t.float    "length"
  t.float    "width"
  t.float    "depth"
  t.string   "material"
  t.string   "frame"
  t.float    "edge"
  t.datetime "created_at",   :null => false
  t.datetime "updated_at",   :null => false
  t.float    "tubes"
  t.float    "tube_length"
end

person sacshu    schedule 02.09.2012    source источник
comment
Данные вообще сохраняются и отсутствуют новые столбцы или отсутствует вся строка? Правильно ли написаны ваши новые атрибуты?   -  person Noah Clark    schedule 03.09.2012
comment
Да, данные сохраняются, только этих двух новых столбцов не хватает. Имеет ли это какое-то отношение к тому факту, что столбцы «created_at» и «updated_at» идут перед этими двумя новыми? Я попытался изменить их положение, и это все равно не сработало.   -  person sacshu    schedule 03.09.2012
comment
Нет, это нормально. Пробовали запускать в консоли?   -  person Noah Clark    schedule 03.09.2012
comment
Можете ли вы опубликовать соответствующую информацию schema.rb и строку model.create(...)?   -  person Noah Clark    schedule 03.09.2012
comment
Отредактированный исходный пост с информацией   -  person sacshu    schedule 03.09.2012
comment
просто догадка, проверьте, загружается ли правильный файл model.csv и имеет ли столбец 8 и 9, что означает наличие во всех 10 столбцах   -  person Pritesh Jain    schedule 03.09.2012
comment
Я бы попробовал пройти через это в консоли. и посмотрите, какие значения дают вам строки [8] и строки [9].   -  person Noah Clark    schedule 03.09.2012
comment
@PriteshJ Да, у него 10 столбцов.   -  person sacshu    schedule 03.09.2012
comment
Извините, разобрался. Поместил файл не в ту папку, глупая ошибка. Спасибо!   -  person sacshu    schedule 03.09.2012


Ответы (1)


Не могу сказать, что это может работать на 100%

Попробуйте Model.reset_column_information над начальным файлом один раз

это должно обновить информацию о столбцах в таблице.

require 'csv'

Model.reset_column_information

Model.delete_all
#......

просто догадка, проверьте, загружается ли правильный файл model.csv и имеет ли столбцы 8 и 9, что означает наличие во всех 10 столбцах.

person Pritesh Jain    schedule 02.09.2012
comment
можете ли вы добавить desc для этого models table из database не схемы, а также Model.new.inspect из rails console - person Pritesh Jain; 03.09.2012
comment
Не уверен, что вы имеете в виду, но вот код использования inspect: #‹Model id: nil, model_number: nil, areq: nil, length: nil, width: nil, depth: nil, material: nil, frame: nil, край: ноль, created_at: ноль, updated_at: ноль, Tubes: ноль, tube_length: ноль› - person sacshu; 03.09.2012
comment
@ user1486809, это выглядит хорошо, попробуйте напечатать значения строк 8 и 9 и посмотрите, извлекают ли они данные, также проверьте тип данных, возможно, данные потеряны во время преобразования. - person Pritesh Jain; 03.09.2012
comment
Спасибо за помощь, я на самом деле просто сделал глупую ошибку и поместил файл не в ту папку - person sacshu; 03.09.2012
comment
то, что я предложил, спросив, загружаете ли вы правильный файл, рад, что это сработало :) - person Pritesh Jain; 03.09.2012
comment
Я добавил это к ответу. - person Pritesh Jain; 03.09.2012