2012-07-11 91 views
0

我有這個紅寶石功能,產生1095記錄MusicTab::FOps.gen_list('/fun/Music') 我想用datamapper來存儲它們。當我這樣做ruby​​ Datamapper沒有插入所有記錄

MusicTab::FOps.gen_list('/fun/Music') do |arr_f| 
@files=Files.create(
:file_path => arr_f[0], 
:title => arr_f[1], 
:album => arr_f[2], 
:artist => arr_f[3]) 
end 

只有154條記錄被插入,我不明白這些記錄是如此特別。 如果我這樣做,我得到零的p @ files.id所有其他記錄,而不是那些存儲的154條記錄。

MusicTab::FOps.gen_list('/fun/Music') do |arr_f| 
@files=Files.create(
:file_path => arr_f[0], 
:title => arr_f[1], 
:album => arr_f[2], 
:artist => arr_f[3]) 
p @files.id 
p @files.title 
p @files.album 
end 

如果我只是打印我可以看到所有的數值的數值一樣

counter=0 
MusicTab::FOps.gen_list('/fun/Music') do |arr_f| 
p arr_f 
counter=counter+1 
end 
counter 

請幫助.. 問候

回答

0

嘗試尋找@ files.errors。我的猜測是你沒有通過驗證,並且沒有得到保存。

您可以嘗試啓用一些調試日誌記錄,看看是否有助於隔離問題。

DataMapper::Logger.new($stdout, :debug) 

這將是有益的,看看你的模型定義的文件對象,而不會被保存的數據的樣本,和一個沒有。上次遇到此問題時,我需要在我的文本字段上設置大小,因爲我正在溢出默認值。

+0

感謝輸出@ files.errors顯示的錯誤,file_path必須是50個字符長,在大多數情況下,它大於50,所以你可以告訴我如何增加字符串大小可能高達300或500個字符? – pahnin 2012-07-11 16:56:38

+0

我想到了,現在它的工作很好,謝謝:) – pahnin 2012-07-11 17:02:57