我有一個問題,與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]