2013-05-22 57 views
0

我很努力的設計/查詢我的數據庫在新的Rails應用程序的最佳方式。這是我在的地方現在:有沒有更好的方法來構造這些數據庫表?

documents: 
    title 
    has_many :document_sections 

document_sections: 
    belongs_to :document 
    habtm :resources 

resources_document_sections: 
    belongs_to :resource 
    belongs_to :document_section 

resources: 
    text 

所以很容易說document_section.resources。但document.resources是給我找麻煩

唯一的辦法我發現做到這一點迄今收集文檔部分的ID,然後運行第二個查詢:

d = Document.last 
s_ids = d.document_section_ids 

Resource.joins(:document_sections) 
     .where(document_sections: { id: s_ids }) 
     .uniq 

所以這開始壞了,隨着查詢變得更加複雜,情況變得更糟。每次我必須觸及這種關係時,都會變得非常頭疼。

我想知道在佈置這些表格時是否可以遵循不同的模式,這樣對他們進行查詢並不是那麼頭疼?還是有更好的查詢策略,我錯過了?

回答

1

您的文檔沒有任何關係。你需要添加一些這兩個模型的關係,你不能只是將其添加到document_sections和預計documents有什麼樣的關係任何事情。

你需要一個has_many ... through:添加到您的文檔:

class Document < ActiveRecord::Base 
    has_many :document_sections 
    has_many :relationships, through: :document_sections 
end 
+0

對此深感抱歉,我忘了在文檔上的'has_many'添加。 'has_many:through'完全符合我的要求,儘管...我很驚訝!出於某種原因,我認爲它不會追蹤多對多的關係。謝謝! – Wheeyls

相關問題