Rails数据库seeds.rb“记住”旧数据

时间:2014-11-02 01:30:44

标签: ruby-on-rails ruby

我有以下seeds.rb文件:

require 'spreadsheet'



allEng1 = [] #english
allSpa1 = [] #english to spanish
allSpa2 = [] #spanish
allEng2 = [] #spanish to english
totalWords = 4999

#Lang.truncate_me!

    book1 = Spreadsheet.open('FinishedEnglishListNoDuplicatesWithFrequencyWithPOSReadyForDB6.xls')
    sheet1 = book1.worksheet 'Sheet1'

    book2 = Spreadsheet.open('finishedSpanish.xls')
    sheet2 = book2.worksheet 'Sheet1'

    for i in 0..totalWords
      vrow  = sheet1.row(i)
      allEng1[i] = vrow[0]
      allSpa1[i] = vrow[1]
      vrow = sheet2.row(i)
      allSpa2[i] = vrow[0]
      allEng2[i] = vrow[1]
    end

    for j in 0..totalWords
      Lang.create(english: allEng1[j], english_to_spanish: allSpa1[j], spanish: allSpa2[j], spanish_to_english: allEng2[j])
    end

当我从Lang DB中删除所有内容并运行seeds.rb时,它似乎“记住”以前在数据库中的单词。

例如,在我的电子表格'finishedSpanish.xls'中,我将西班牙语单词'yo'更新为'Yo'但是当我运行以下命令时,我仍然在数据库中得到'yo':

Lang.delete_all

rake db:seed(这个命令运行得非常快,这让我觉得旧数据在某个地方被缓存而没有加载更新的信息)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

如果没有回调导致downcase,并且因为它无法记住你删除的数据库,所以数据库不会导致问题。由于delete_all运行直接SQL Delete语句,甚至没有触及回调。

删除目录中的所有xls文件(同时清空垃圾箱以避免tmp文件存在)。然后放置新的。