0

我有一個問題,與mongoid繼承。我有一個從Location類繼承mongoid文檔的Zipcode。它具有以下幾個簡單的繼承結構:Mongoid繼承後代問題在ruby-debug

class Zipcode < Location 

我也有其填寫使用nested_attributes的郵政編碼對象的對象。我注意到,當它試圖創建Zipcode對象時,它改爲創建一個Location對象。在我的測試代碼中,一切正常,但在我的生產代碼中,事情無法正常工作。

在我的代碼上運行ruby-debug之後,我在文件中發現了以下行爲:〜/ work/Project/bson/ruby​​/1.9.1/gems/mongoid-2.2.3/lib/mongoid/document。 RB:277

Breakpoint 2 at /Users/pc/work/Project/bson/ruby/1.9.1/gems/mongoid-2.2.3/lib/mongoid/document.rb:277 
/Users/pc/work/Project/bson/ruby/1.9.1/gems/mongoid-2.2.3/lib/mongoid/document.rb:277 
@_type ||= [descendants + [self]].flatten.uniq.map { |t| t.to_s } 
(rdb:48) p descendants 
[] 
(rdb:48) p Zipcode.ancestors && [Location] 
[Location] 
(rdb:48) p descendants 
[Zipcode] 
(rdb:48) 

看到它的奇怪後裔(這是在BasicObject)被填寫時Zipcode.ancestors被調用。我正在使用Ruby1.9.2,Mongoid 2.2.3和Rails3.1.1。

問題:在嵌套屬性中是否有特殊的mongoid語法來獲得繼承?是否有需要在mongoid,rails或ruby中解決的問題?

更新:

只是爲了表明闖入測試代碼工作第一次:

Breakpoint 1 at /Users/pc/work/Project/bson/ruby/1.9.1/gems/mongoid-2.2.3/lib/mongoid/document.rb:277 
/Users/pc/work/Project/bson/ruby/1.9.1/gems/mongoid-2.2.3/lib/mongoid/document.rb:277 
@_type ||= [descendants + [self]].flatten.uniq.map { |t| t.to_s } 
(rdb:1) p descendants 
[Zipcode] 

回答

0

找到了解決辦法必須改變

config.cache_classes = true 
在配置

/環境/發展.RB。它有時顯然會擾亂rails中的繼承。