2014-11-02 2 views
1

У меня есть следующий seeds.rb файл:Rails Database 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», но когда я бегу следующие команды я все еще получаю «йо» в БД:

Lang. delete_all

грабли БД: семя (эта команда работает очень быстро, что заставляет меня думать, старые данные кэшируются где-то и не загружая обновленную информацию)

Любая идея, почему это?

+0

добавить 'puts' к каждому элементу, например' puts allEng1 [j] ', чтобы проверить, действительно ли они установлены. – mohameddiaa27

+0

Все 4 массива устанавливаются/проверяются с помощью puts – mtcrts70

+0

. Только 2 возможности, вызывающие такую ​​проблему, являются обратными вызовами, которые обрабатывают строки или передают старые файлы в «Spreadsheet.open» – mohameddiaa27

ответ

2

Если нет обратных вызовов, вызывающих пустоту, и поскольку невозможно запомнить вашу удаленную базу данных, чтобы база данных не вызывала проблемы. Поскольку delete_all запускает прямой оператор SQL Delete, даже не касаясь обратных вызовов.

Удалите все файлы xls из вашего каталога (также пуст мусор, чтобы избежать существования файлов tmp). Затем поместите новые.

Смежные вопросы