0

몽고메드 상속에 문제가 있습니다. mongoid 문서 둘 다 Location 클래스에서 상속받은 Zipcode가 있습니다. 루비 디버그에서 몽고 이드 상속 자손이 발생했습니다.

class Zipcode < Location 

는 또한 I nested_attributes가 우편 번호를 이용하여 객체를 채우는 목적을 가지고 다음과 같은 간단한 상속 구조를 갖는다. 나는 Zipcode 객체를 만들려고 할 때 대신에 Location 객체를 생성하는 것을 보았습니다. 내 테스트 코드에서는 모든 것이 잘 작동하지만, 제작 코드에서는 일이 제대로 작동하지 않습니다.

내 코드에서 루비 디버그를 실행 한 후 ~/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) 

Zipcode.ancestors가 호출 될 때 후손 (BasicObject에있는) 작성 가져옵니다 이상한 참조하십시오. Ruby1.9.2, Mongoid 2.2.3 및 Rails3.1.1을 사용하고 있습니다.

질문 : 중첩 된 속성에서 상속을받는 몽고 이드 구문에는 특별한 것이 있습니까? 몽고이 (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. 때로는 명백하게 상속을 망쳐 놓습니다.