我有一个Product
模型。该产品属于以下两类之一:易腐烂或不易腐烂。
易腐产品具有以下规格:
非易腐产品具有以下规格:
首先我想这样做:
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
但是,如果我这样做,我的数据库将被填充为零。这是一个问题吗?我应该采取另一种方式吗?
答案 0 :(得分:1)
这听起来像是使用子类的绝佳机会。易腐烂和不易腐烂的物品将是从产品延伸的两个不同的类别。
答案 1 :(得分:0)
如果您预见到不同的产品类型越来越多地具有比我建议转变为多态类型更多的独特属性,那么如果产品属性几乎不会发生太大变化,您可以保留此方法并可选择转向STI模型方法,db列保持不变,但代码将有更好的分离。