2012-05-02 19 views
8

Uygulamam için Mongoid kullanıyorum ve Kullanıcılar ve abonelikler için doğru ilişkileri kurmakta sorun yaşıyorum.Mongoid: belongs_to kullanıcı ve has_one kullanıcısı

Yapmam gereken tek şey, basit bir "Kullanıcıya sahip olan ve bir diğerine ait" olan UserSubscription modeli ilişkisidir.

> user1.user_subscriptions # list of subscription objects 
> user1.user_subscriptions << UserSubscription.create(:user => user2, :category => 'Test') 
> user1.user_subscriptions.where(:user => user2).delete_all 

Bu nasıl uygulamaya:

class User 
    has_many :user_subscriptions 
end 

class UserSubscription 
    belongs_to :user 

    has_one :user # user2 to which user1 is subscribed 
    field :category, :String 
end 

yapmak istediğim tek şey, her kullanıcı için abonelikleri listesini sahip olmaktır? Yardımın için teşekkürler.

cevap

10

Sorun, aynı ada sahip iki ilişkiniz olması ve has_one :user ilişkiniz için ters bir ilişkiye ihtiyacınız var. Hep böyle bir şey deneyebilirsiniz:

> user1.create_subscription(:subscriber => user2, :category => "Test") 
> user1.subscriptions.where(:subscriber => user2).delete_all 
+1

teşekkür:

class User include Mongoid::Document has_many :subscriptions has_many :subscribers, :class_name => "Subscription", :inverse_of => :subscriber end class Subscription include Mongoid::Document field :category belongs_to :owner, :class_name => "User", :inverse_of => :subscriptions belongs_to :subscriber, :class_name => "User", :inverse_of => :subscribers end 

Sonra gibi şeyler yapmak gerekir! Kullanıcı sınıfındaki has_many ilişkisini değiştirdiğimde çalışır: has_many: subscriptions,: class_name => "Subscription",: inverse_of =>: owner –

İlgili konular