2014-04-24 62 views
0

我對mongoid完全陌生。在類關係定義中是否有任何選項或某些東西來啓用它?Mongoid:如何引用N對N關係中的父對象屬性

class Band 
    include Mongoid::Document 
    field :name, type:String 
    has_and_belongs_to_many :members 
end 

class Member 
    include Mongoid::Document 
    field :name, type: String 
    has_and_belongs_to_many :bands 
end 

andy = Member.new(name: 'Andy Bell') 

ride = Band.new(name: 'Ride') 
ride.members << andy 
oasis = Band.new(name: 'Oasis') 
oasis.members << andy 

andy.bands #=> returns: [] (empty array) 
andy.band_ids #=> returns: [BSON::ObjectId('53586a786d6163870c030000'), BSON::ObjectId('53586a786d6163870c040000')] 

回答

1

我不知道,但是從the docs here閱讀有重裝方法,有何幫助?:

如果您正在使用模型的默認範圍是一個關係 的一部分像has_many,has_and_belongs_to_many或embeds_many,您必須重新加載關係以重新應用範圍。這對於 筆記很重要,如果您更改關係中文檔的值, 會影響其在範圍關係中的可見性。

class Label 
    include Mongoid::Document 
    embeds_many :bands 
end 

class Band 
    include Mongoid::Document 
    field :active, default: true 
    embedded_in :label 
    default_scoped where(active: true) 
end 

label.bands.push(band) 
label.bands #=> [ band ] 
band.update_attribute(:active, false) 
label.bands #=> [ band ] Must reload. 
label.reload.bands #=> [] 
相關問題