假设我的网站上有不同类型的产品,所以我有餐厅,酒店,旅行,景点等课程。每种类型的产品/服务都有自己的类,因为它们具有不同的字段和一些特定的方法。
我怎样才能对这些不同的课程进行分类?例如,将所有旅行和景点分类为“活动”。我是否需要为此创建一个超类,即使它们的共同逻辑非常少?或者可以使用类变量'@@ category'?
我的主要需求是能够查询属于特定类别的类的所有实例。
答案 0 :(得分:2)
假设这些产品只属于一个类别,并且所有产品属于同一类别。
创建新模型(和表)类别。
创建您需要的任何类别(让我们说“活动”和“地点”)。
创建一个新表product_categories,其中包含字段model(string)和category_id(integer)。
为产品类别创建种子数据 - 类似于model:Trip,category_id:1
瞧,你的旅行现在是一项活动。我建议添加一个范围,通过category_id查找,也许是与自定义连接SQL的belongs_to关联。
答案 1 :(得分:1)
如果有行为或字段更改,请考虑STI (single-table inheritance)。
如果有一个“大”字段是不同的,我会考虑把主要模型挂掉。