2011-06-27 13 views
0

私は次のモデルがあります:Mongoid持続性の問題

 
class Bill 
. . . some fields . . . 
belongs_to :sponsor, :class_name => "Legislator" 
end 
class Legislator 
    .. .some fields . . . 
    has_many :bills 
end 

を、私はこの奇妙な振る舞いを得るが、私は、これは単純なものであると確信しています:

 
Loading development environment (Rails 3.0.7) 
b = Bill.first 
l = Legislator.first 
l.bills << b 
l.save 
=> true 
(I can view l.bills, but l.bills.all.to_a.count is 0) 
l.govtrack_id 
=> 400001 
ruby-1.9.2-p180 :007 > Legislator.where(govtrack_id: 400001).first.bills 
=> [] 

だから私はできますアソシエーションを作成して表示します。保存は成功しますが、オブジェクトを取得すると関連付けは解除されます。 。 。エラーはありません。私は混乱しています、私は何が欠けていますか?

答えて

2

Legislatorモデルにinverse_ofが見つかりません。私は簡単なテストをしました(モンゴイ問題がないことを確認するため)。私のモデルは、このようにした:テストから

class Bill 
    include Mongoid::Document 
    include Mongoid::Timestamps 
    field :name 
    belongs_to :sponsor, :class_name => "Legislator" 
end 

class Legislator 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :govtrack_id 
    has_many :bills, :inverse_of => :sponsor 
end 

とコンソール出力:

ruby-1.9.2-p180 > Bill.create(:name => "A new bill") 
    => #<Bill _id: 4e0822636a4f1d11c1000001, _type: nil, created_at: 2011-06-27 06:25:39 UTC, updated_at: 2011-06-27 06:25:39 UTC, name: "A new bill", sponsor_id: nil> 
ruby-1.9.2-p180 > Legislator.create(:govtrack_id => "400123") 
    => #<Legislator _id: 4e0822786a4f1d11c1000002, _type: nil, created_at: 2011-06-27 06:26:00 UTC, updated_at: 2011-06-27 06:26:00 UTC, govtrack_id: "400123"> 
ruby-1.9.2-p180 > l = Legislator.first 
ruby-1.9.2-p180 > l.bills << Bill.first 
    => [#<Bill _id: 4e0822636a4f1d11c1000001, _type: nil, created_at: 2011-06-27 06:25:39 UTC, updated_at: 2011-06-27 06:26:08 UTC, name: "A new bill", sponsor_id: BSON::ObjectId('4e0822786a4f1d11c1000002')>] 
ruby-1.9.2-p180 > l.save! 
    => true 
ruby-1.9.2-p180 > Bill.first.sponsor.govtrack_id 
    => "400123" 
ruby-1.9.2-p180 > Legislator.first.bills 
=> [#<Bill _id: 4e0822636a4f1d11c1000001, _type: nil, created_at: 2011-06-27 06:25:39 UTC, updated_at: 2011-06-27 06:26:08 UTC, name: "A new bill", sponsor_id: BSON::ObjectId('4e0822786a4f1d11c1000002')>] 
+0

素晴らしいです。まさに私が必要なもの。私は見つけることができるドキュメントを読んで、あなたはドキュメントへのリンクを持っていますか:inverse_of? – bonhoffer

+0

モンゴイドのドキュメントは素晴らしく、いくつかのものは確かに見つけにくいです! :) [このページ](http://mongoid.org/docs/relations.html)の一番下に簡単なリファレンスがあります。 – theTRON

関連する問題