有没有更好的方法来构建这些数据库表?

时间:2013-05-22 04:36:03

标签: sql ruby-on-rails database-design activerecord

我正在努力寻找在新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 个答案:

答案 0 :(得分:1)

您的文档没有任何关系。您需要在关系中为两个模型添加内容,您只需将其添加到document_sections并期望documents与任何内容有任何关系。

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

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