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

所以这开始很糟糕,随着查询变得更复杂,情况会变得更糟。每次我不得不触及这段关系时,它变得相当头疼。

我想知道在布置这些表时是否可以遵循不同的模式,这样查询它们就不会那么令人头疼了?还是我缺少更好的查询策略?

4

1 回答 1

1

您的文档没有任何关系。您需要向关系中的两个模型添加一些东西,您不能只是添加它document_sections并期望documents与任何东西有任何关系。

您需要在has_many ... through:文档中添加一个:

class Document < ActiveRecord::Base
  has_many :document_sections
  has_many :relationships, through: :document_sections
end
于 2013-05-22T13:52:22.723 回答