2013-09-26 11 views
0

我想知道是否有其他人有類似的問題,我已經看到 - 這是發生了什麼;所有記錄在Mongodb/Ruby on Rails/Mongoid模型中消失,具有散列字段屬性和錯誤

我使用的MongoDB和Mongoid 我有一個名爲Selectfield(如在表單中選擇標籤)模型的屬性稱爲option_values這是一個散列一個Rails應用程序3.2.14:

class Selectfield < Inputfield 
    #inherits name and label from Inputfield 

    field :option_values, type: Hash # key/vals for <option> in <select> 
end 

朗當我保存一個新的Selectfield時,有時我會得到一個與option_values散列有關的錯誤,並且隨後看起來好像所有其他記錄都會丟失。去inputfields控制器,即使我知道我有10多條記錄保存,它也不會顯示記錄。在我修正了表單中的錯誤之後,這將會持續。

奇怪的是,一旦我創建了一個沒有錯誤的新輸入域,所有以前消失的記錄就會出現。我認爲這可能與散列格式的錯誤有關,也許是錯誤的引號。也許格式錯誤的哈希引起了錯誤,並且新記錄會以某種方式解決它?

儘管在短期內我已經能夠解決這個問題,但我最關心的是如何簡單地破壞MongoDB,使其顯示所有記錄都已丟失。有沒有人看到這個問題?我只用了一個星期的MongoDB,所以我想知道這是否是別人看到的問題。我搜索了這種類型的錯誤,並沒有看到任何有類似問題的人。

我也告訴Mongoid或MongoDB?或者,我們是否將這個問題記錄在用戶錯誤上

+0

這似乎很奇怪你的應用程序,因此我懷疑其他人會看到它。如果你可以縮小範圍,我們可以很容易地在我們的機器上覆制,那麼它將不勝感激。 –

+0

這個問題似乎是無關緊要的,因爲它對用戶的應用程序來說是超級特定的。 –

+0

雖然它可能是應用程序特定的,你不認爲這是一個災難性的類型錯誤,其他人應該被通知或意識到?我不認爲這是脫離主題。 – jmtoporek

回答

0

我想出了問題 - Selectfield和Textfield是使用單表繼承從Inputfield繼承的類。 Selectfield和Textfield模型類不會被加載,直到我試圖單獨創建其中的一個。由於我在DEV模式下運行應用程序,因此DEV環境的默認設置不會緩存類 - 在應用程序啓動時加載類可能有更好的方法,但此設置更改確實有效。我把它放在config/environements/development.rb文件中;

config.cache_classes = true 

希望這可以幫助任何有此問題的人。也許一個標準的ActiveRecord應用程序不會有這個問題,但我不能肯定地說。

相關問題