我有以下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(这个命令运行得非常快,这让我觉得旧数据在某个地方被缓存而没有加载更新的信息)
知道为什么会这样吗?
答案 0 :(得分:2)
如果没有回调导致downcase,并且因为它无法记住你删除的数据库,所以数据库不会导致问题。由于delete_all
运行直接SQL Delete
语句,甚至没有触及回调。
删除目录中的所有xls
文件(同时清空垃圾箱以避免tmp文件存在)。然后放置新的。