2010-06-15 5 views
0

에 포함 된 문서에 대한 키로 정의 대 소스 코드가has_one MongoMapper 및 MongoDB를

class RealTimeDetail 
    include MongoMapper::EmbeddedDocument 
    key :url, String 
    key :method, String 
end 

class TargetFeed 
    include MongoMapper::Document 

    key :name, String, :null => false 
    key :feed_type, String, :null => false 
    has_one :real_time_detail 

end 

언제 할 target_feed.real_time_detail = RealTimeDetail.new (: 홈페이지 => "http://example.com": 방법 = > "get")

오류가 발생합니다.

대신 내가

class TargetFeed 
    include MongoMapper::Document 

    key :name, String, :null => false 
    key :feed_type, String, :null => false 
    key :real_time_detail, RealTimeDetail 

end 

이 작동에 TargetFeed을 변경했습니다하지만 그것에 대해 갈 수있는 가장 좋은 방법은 궁금했다.

답변

0

클래스가 ActiveRecord에서 더 이상 상속받지 않으며 has_oneActiveRecord에 속하므로 사용할 수 없습니다. 노골적인 key을 사용하면 효과가있는 것처럼 보입니다.

0

MongoMapper는 데이터 모델 간의 연결을 구현하기 위해 다른 구문을 사용합니다. 여기에 세부 사항 : http://mongomapper.com/documentation/plugins/associations.html

그것의 짧은 난 당신이 포함 된 문서로 RealTimeDetail을 정의한 이후 당신이 연결을 선언 할 필요가 없다는 생각 one

class TargetFeed 
    include MongoMapper::Document 

    key :name, String, :null => false 
    key :feed_type, String, :null => false 
    one :real_time_detail 

end 

사용하는 대신 has_one의입니다 RealTimeDetail의 정의. RealTimeDetail에 포함 된 문서 (EmbeddedDocument 대신)를 사용하는 경우 belongs_to는 끝에서 다음을 사용합니다.