1

この特定の部分を含むアプリケーションのデータ モデルを既に定義しています。ここに画像の説明を入力

今、私の特定の問題はモデリング「Value」に関連しており、それは子モデル「Value_Decimal」と「Value_Text」です。基本的に、この階層には他にもいくつかの値の型があり、各値モデルには他にもいくつかの異なる列があることが予想されるため、この階層は持ちたくありません (この事実のため、単一テーブルの継承は考慮していません)。Rails の Active Record でこれを実装するにはどうすればよいですか?

よろしくお願いします!

4

1 に答える 1

1

item_property_valueテーブルには、多態的な関連付けを可能にする列が必要ですvalue_typevalue次に、抽象モデル (テーブルを持たない)から継承するさまざまな「値」モデルごとに名前を付けた異なるテーブルを作成できます。この方法で STI を回避できますが、それでも 1 つの基本モデルから継承できます。

モデルは 3 つの異なるリレーションシップを組み合わせているため、第一級の Rails モデルとして扱う必要があります。つまり、主キーとしてitem_property_valueも必要になります。id次に、has-many-throughマッピングを使用して、結合している実際のオブジェクトにアクセスできます。

ポリモーフィック アソシエーションについては、こちらを参照してください。抽象クラスは、次のように単純にフラグが付けられます。

class Value < ActiveRecord::Base
  self.abstract_class = true
end
于 2012-10-18T21:57:34.687 に答える