0

私はProductモデルを持っています。製品は、生鮮食品または非生鮮食品の 2 つのカテゴリのいずれかに属します。

生鮮品には次の仕様があります。

  • datetime : 作成日
  • datetime : 有効期限
  • 整数 : 重み

腐りにくい製品の仕様は次のとおりです。

  • datetime : 作成日
  • 文字列 : ブランド
  • 整数 : 形状

最初に私はそれをすることを考えました:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :name
      t.boolean :perishable
      t.datetime :creation_date
      t.datetime :expiration_date
      t.integer :weight
      t.string :brand
      t.integer :shape

      t.timestamps
    end
  end
end

しかし、そうすると、データベースの半分がゼロになります。これは問題ですか?これを別の方法で行う必要がありますか?

4

2 に答える 2

1

これは、サブクラスを使用する絶好の機会のように思えます。腐りやすいアイテムと腐りにくいアイテムは、Products から拡張された 2 つの異なるクラスになります。

于 2013-11-06T15:10:48.023 に答える
0

さまざまな製品タイプがますます固有の属性を持ち、ポリモーフィック タイプに移行することをお勧めする場合、製品の属性がほとんど変わらない場合は、このアプローチを維持し、オプションで STI モデル アプローチに移行することができます。列は同じままですが、コードの分離が改善されます。

于 2013-11-06T15:07:44.733 に答える