如何在rails中实现类'类别'?

时间:2011-11-03 16:07:19

标签: ruby-on-rails

假设我的网站上有不同类型的产品,所以我有餐厅,酒店,旅行,景点等课程。每种类型的产品/服务都有自己的类,因为它们具有不同的字段和一些特定的方法。

我怎样才能对这些不同的课程进行分类?例如,将所有旅行和景点分类为“活动”。我是否需要为此创建一个超类,即使它们的共同逻辑非常少?或者可以使用类变量'@@ category'?

我的主要需求是能够查询属于特定类别的类的所有实例。

2 个答案:

答案 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)

如果有一个“大”字段是不同的,我会考虑把主要模型挂掉。