我有以下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数据库中删除所有内容并运行seeds.rb时,它似乎"记住"了数据库中以前的单词。
例如,在我的电子表格"finishedSpanish.xls"中,我将西班牙语单词"yo"更新为"yo",但当我运行以下命令时,我仍然会在DB中得到"yo":
Lang.delete_all
rakedb:seed(这个命令运行得非常快,这让我认为旧数据被缓存在某个地方,而没有加载更新的信息)
知道为什么吗?
如果没有回调导致下降,并且由于不可能记住已删除的数据库,因此数据库不是问题的根源。由于delete_all
运行的是直接SQL Delete
语句,甚至不涉及回调。
从目录中删除所有xls
文件(同时清空垃圾桶以避免tmp文件存在)。然后放置新的。