0

ソースコードは

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(:url => " http://example.com "、:method => "get")を実行すると

エラーが発生します。

代わりに、TargetFeedをに変更しました

class TargetFeed
  include MongoMapper::Document  

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

end

これは機能しますが、これが最善の方法かどうか疑問に思っていました。

4

2 に答える 2

0

クラスは から継承されなくなりActiveRecord、 にhas_one属してActiveRecordいるため、使用できません。明示的に使用するkeyとうまくいくようです。

于 2011-05-31T22:30:04.090 に答える
0

MongoMapper は、データ モデル間の関連付けを実装するためにさまざまな構文を使用します。詳細はこちら: http://mongomapper.com/documentation/plugins/associations.html

それの短いは、代わりにhas_one、使用しますone

class TargetFeed
  include MongoMapper::Document  

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

end

RealTimeDetail を埋め込みドキュメントとして定義したので、RealTimeDetail の定義で関連付けを宣言する必要はないと思います。RealTimeDetail に (EmbeddedDocument の代わりに) Document が含まれている場合は、末尾から belongs_to を使用します。

class RealTimeDetail
  include MongoMapper::Document
  key :url, String
  key :method, String
  belongs_to :target_feed
end
于 2012-10-22T22:41:09.073 に答える