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 を収集してから、2 番目のクエリを実行することです。

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 に答える