0

問題は、Ruby on Rails の関連付けで多重度をどのように表現するかです。CollectionItemの 2 つのモデルがあるとします。それらはhas_and_belongs_to_many関係にあります。コレクションにアイテムの同一のインスタンスが複数含まれている場合 (たとえば、10 個の同一のアイテムが含まれている場合)、どうすればよいですか?

has_many :through を試してみましたが、あまり良いアプローチではないようです。

4

1 に答える 1

0

最初に、多重度を表すために重複するDB レコードがある単なる 1 対多ではなく、多対多の関係が本当に必要であることを明確にしたいと思います。よろしければ、items必要な回数だけレコードを複製し、collection_id外部キーを適切なCollectionレコードに向けることができるからです。

それがあなたの望むものではなく、あなたが本当に多重度を望んでいるなら、私はこれを行うために ActiveRecord アソシエーションを使用しません。オブジェクトの配列またはリストをitem_ids格納Collectionし、この配列をデータベース内の文字列またはテキスト フィールドにシリアライズ/デシリアライズします。

collection.item_ids
=> [2, 3, 1, 1, 2, 1, 2, 2, 2, 2, 5, 6, 2, 3, 2]

属性の各エントリはテーブルitem_idsへの外部キーです。items

たまたま Postgres を DB として使用している場合は、リスト/配列をPostgres arraycolumnとして実際に保存できると思いますが、Rails で実際にこれを実行しようとしたことはありません。

于 2013-04-12T19:12:07.697 に答える