Rails种子数据在迁移后未正确加载

时间:2012-09-02 21:28:05

标签: ruby-on-rails-3 csv seed

我使用下面的代码加载了一些种子数据,它运行正常。然后,我需要添加两个列,我使用以下步骤,但它没有将两个新列种子数据附加到表中,我做错了什么?

步骤:

  1. 使用迁移添加两列
  2. 在模型中使它们成为attr_accessible
  3. 用新的CSV文件替换旧的CSV文件
  4. 更改seed.rb文件以插入新数据
  5. 运行rake db:seed
  6. Seed.rb

    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
    

    Schema.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
    

1 个答案:

答案 0 :(得分:1)

不能说这可能100%

在种子文件上方尝试Model.reset_column_information

这应刷新表格中的列信息。

require 'csv'

Model.reset_column_information

Model.delete_all
#......

只是猜测是否正在加载正确的model.csv并且第8列和第9列意味着在所有10列中都有。