我正在努力寻找在新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
所以这开始变坏,并且随着查询变得更复杂而变得更糟。每次我必须触及这种关系时,它变得非常头疼。
我想知道在布置这些表格时是否存在不同的模式,以便查询它们并不是一件令人头痛的问题?或者我有一个更好的查询策略?
答案 0 :(得分:1)
您的文档没有任何关系。您需要在关系中为两个模型添加内容,您只需将其添加到document_sections
并期望documents
与任何内容有任何关系。
您需要在文档中添加has_many ... through:
:
class Document < ActiveRecord::Base
has_many :document_sections
has_many :relationships, through: :document_sections
end