2012-04-06 9 views
0

私はMySQL DBを使用してRails 3.2アプリケーションを実行しています。例えば、Albumという動的コレクションのようなモデルを構築したいとします。データベースに格納されたパラメータを使用してオブジェクトの動的コレクションを構築する方法

アルバムには別のモデルのインスタンスが複数含まれている必要があります。たとえば、私はそれらをItemと呼びますが、1対多の結合テーブルで静的にしか関連付ける必要はありません。

それはのような基準を定義することも可能であるべきである。

  • Album
  • Album日付を終了する開始日からItem Sを含有するフラグXYが "FOO"
  • あるItem Sを含有します。

これらの基準/パラメータは、データベースに永続的に保存する必要があります。 Itemは一度リンクしないでください。新しいItemは、パラメータに一致する場合にアルバムに添付する必要があります。

パラメータの数は柔軟にする必要があります。たとえば、アルバムの複数の時間範囲が可能である必要があります。だから私は、アルバムと一致する時間範囲の間の関係を格納する余分なテーブルについて考えてみましょう。

この方法を実装し、Album内のすべてのアイテムを簡単なalbum.itemsコールでアクセスできるようにするには、最も効果的な/最も効果的な方法は何でしょうか?

ダイナミックリンクのパラメータはどこに保存する必要がありますか?

+0

したがって、本質的に任意のクエリをデータベースに保存したいですか? –

+0

いいえ。コレクションの基準は完全に恣意的であってはならない。私は上記の時間範囲のような3つの可能な基準について考えています。したがって、クエリ自体はクエリのパラメータのみに格納されなければならない。時間範囲の開始日と終了日。 – alex

+0

しかし、依然として分解されたクエリを保存しています。そして今日あなたは3つの基準を持っていますが、それはほぼ確実に変わります(そしておそらく、リリースの前日の03:00です)。配列で条件を指定できる場合は、 'serialize'を使って条件を直列化することができます。 –

答えて

1

Albumに複数の基準を設定できるので、ItemSetクラスを作成できると思います。 ItemSetは、単一のテーブル継承を使用してさまざまなサブクラスを持つことができます(または、この種の動作を別の方法で実現することもできます; hereを参照)。ItemSetの種類に応じて各サブクラスでitemsメソッドを定義できますセットなど)。 album.itemsalbum.item_setsのそれぞれのitemsの和集合になります。

+0

私はクラスのItemSetとサブクラスのそれぞれの種類のためにどのようにItemSetのすべてのサブクラスのようにアルバムへの関係はどうでしょうか? – alex

+0

@alex:単一のテーブル継承を使用している場合、 'belongs_to:album'を' ItemSet'クラスに入れるだけでよいと思いますが、私は肯定的ではありません。 [このリンク](http://www.alexwestholm.com/tech/rails-single-table-inheritance-and-polymorphic-associations-some-simple-examples/)はあなたがしていることを示しているようです。 –

+0

ありがとうございます - 私はあなたが良い方向に私を指していると思います!私の実装が完了したら私は最終的な解決策を思いつきます! – alex

関連する問題