0
我有模型A,B,C,D。一個模型有多個記錄的B,B的C和C的D. D如何在下面搜索多個模型的記錄?
我想知道是否有什麼辦法可以從A到D以比從A到B更清潔的方式...遞歸到D,製作龐大而沉重的代碼。
我在想,如果它可能寫出像
aa = A.something
if aa.bs.cs.ds.where(:status=>1).any?
...
我不知道這更好的,所以也許誤導...
我有模型A,B,C,D。一個模型有多個記錄的B,B的C和C的D. D如何在下面搜索多個模型的記錄?
我想知道是否有什麼辦法可以從A到D以比從A到B更清潔的方式...遞歸到D,製作龐大而沉重的代碼。
我在想,如果它可能寫出像
aa = A.something
if aa.bs.cs.ds.where(:status=>1).any?
...
我不知道這更好的,所以也許誤導...
當然,使用怎樣的標題有一對多透:
class A < ActiveRecord::Base
has_many :bs
has_many :cs, :through => :bs
has_many :ds, :through => :cs
end
class B < ActiveRecord::Base
belongs_to :a
has_many :cs
end
class C < ActiveRecord::Base
belongs_to :b
has_many :ds
end
class D < ActiveRecord::Base
belongs_to :c
end
現在,你可以通過調用得到所有ds
的一個a
(每個d
的狀態過濾):
a.ds.where(status: 1)
你可以叫exist?
或任何查詢API調用的,你會在任何ActiveRelation對象。請注意,所有這些都假設您正在嘗試使用與單個a
記錄相關的ds
。如果您正在處理一組a
記錄(例如範圍內的ActiveRelation),則需要採取稍微不同的方法來獲取結果 - 如果這是您需要的,請告訴我。
它是exacly,謝謝。 –