age*_*eto 2 inheritance ruby-on-rails
我正在编写一个电子商务类型的网络应用程序(不完全是,但给你一个想法).我将展示与彼此关系不大的不同类型的产品,但我希望有一个Product父类,为所有子类提供一个公共视图,并共享一些字段和行为.
但是这给我提出了许多问题,特别是关于ActiveModel:产品不应该有自己的表,但我希望它的子类(酒店,餐馆等)中的某些字段可以从中继承这些字段.我该怎么办呢?
拥有Product父类的另一个原因是最终我将需要使用Product.all和类对象的不同范围.
也许我完全被误导了,所以请随意建议任何方式来做到这一点.也许使用模块?
首先,继承意味着字段是继承的; 因此,您不仅可以获得一些字段,而且还可以获得子类中父类的所有字段.
您可以通过多种方式实现您想要的目标:
set_table_name在子类路由模型中使用另一个表.如果您有多个表与表共享相同的字段,这将非常有用product.product_type您可以default_scope用来始终应用诸如的条件之类的属性进行区分default_scope where(:product_type => :hotel)使用API作为使用上述方法的参考.
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |