0
假設我有3種型號,A,B和C:手動構建關聯以避開mongoid的加載限制?
class A
include Mongoid::Document
has_many :bs
...
class B
include Mongoid::Document
belongs_to :a
has_many :cs
...
class C
include Mongoid::Document
belongs_to :B
...
看來mongoid不支持複雜的預先加載爲版本6。是否有可能,而不是僅僅運行我的3個查詢,抓住所有作爲,Bs和Cs,並手動覆蓋關聯。事情是這樣的:
a = A.(#some criteria).first
bs = B.where(a_id: a.id).group_by{|x| x.id}
cs = C.where(:b_id.in => bs.values.collect{|x| x.id}).group_by{|x| x.b_id}
a.bs = bs
bs.values.each do |k,v|
v.a = a
v.cs = cs[k]
end
cs.each do |k,v|
v.b = bs[v.b_id]
end
這似乎是工作得很好,但它觸發萬噸查詢的,當你去訪問a.bs和b.cs等,所以它顯然不是在mongoid水平工作。有沒有辦法手動覆蓋關聯,以便我可以運行查詢並手動組裝它們?
基本上,我想要做這樣的事情是什麼這個職位描述但mongoid(和使用Rails 5):
感謝您的幫助, 凱文