1

私が現在取り組んでいるプロジェクトには、次のモデルがあります。

Guest
    name: string

Episode
    title: string
    description: string

Appearance
    guest_id: integer
    episode_id: integer

ご覧のとおり、ゲストはアピアランステーブルを通じて複数のエピソードに「登場」します。現在RSSでエピソードを取得するとき、Guestテーブルのメンバーのタイトルと説明を確認する方法を見つけたいと思います。一致するものが見つかった場合は、関連付けを構築します。

通常、これはゲストの数が少ない場合は非常に簡単ですが、ゲストのコレクション全体を繰り返し処理して、エピソードのタイトルフィールドと説明フィールドの両方を確認するのは無駄に思えます。

これはある種の「解決された問題」であることがわかりますが、非常に多くのゲストまたは検索される属性の数の増加(フィールドの追加など)のスケーリングへの影響を考慮した解決策を見つけるのに問題がありました。チェックするエピソードモデル)。

どんな助けでも大歓迎です。

4

1 に答える 1

0

関係が適切に構成されていると仮定します。

descriptions = rss_items.map {|i| i.description}

Guest.includes(:episodes)
     .where(Episode.arel_table[:description].in(descriptions))

Guesthas_many :episodes, through: :appearancesありhas_many :appearancesます。

于 2012-12-10T04:37:55.863 に答える