0

我正在建立一个对地方进行评分的 Rails 站点。

每个地方都属于一个类别。每个类别都有许多特征。因此,一个地方可以只属于一个类别,但可以选择它的许多特征。如果一个地方属于第 1 类,那么它只能具有第 1 类的(1 个或多个)特征,而不能具有其他任何特征。也是每个地方的年龄组。

实现此目的的 Rails 方法是什么?

  • 我应该为年龄组设置单独的表格还是将它们作为位置表格本身的一部分?
  • 如何将要素与地点相关联?我应该有一个单独的表格,如下所示(PlacesFeatures 表格)吗?

我正在使用 SQLite 进行开发,并且将使用 postgres(在 Heroku 上)进行生产。


这是我想到的表结构(表和它的列):

放置表:

INTEGER id 
STRING name
INTEGER category_id
STRING address
FLOAT rating

类别表:

INTEGER id
STRING name

特征表:(该表格将显示每个类别的特征,通过查询此表来选择)

INTEGER id
STRING name
INTEGER category_id

年龄组表:(一个地方可以选择多个年龄组)

INTEGER id
INTEGER place_id
BOOLEAN zero_to_three
BOOLEAN four_to_eight
BOOLEAN nine_to_twelve
BOOLEAN thirteen_above

PlacesFeatures 表:

INTEGER id
INTEGER place_id
INTEGER category_id
BOOLEAN feature_1
BOOLEAN feature_2
...
BOOLEAN feature_n

关系:

Place 
   belongs_to :category
   has_many   :age_groups

Category 
   has_many :places
   has_many :features

AgeGroup
   belongs_to :place

Place 条目将通过表单提交创建。

谢谢你。

4

1 回答 1

1

您应该在 Places 表或单独的 PlacesAgeGroups 表中具有布尔标志,如下所示:

PlacesAgeGroups 表:

INTEGER id
INTEGER place_id
INTEGER age_group_id

年龄组表:

INTEGER id
INTEGER description

类似地,PlacesFeatures 应该有对特征的引用,每条记录一个特征。

PlacesFeatures 表:

INTEGER id
INTEGER place_id
INTEGER category_id # (this is optional, as it's already set in Places table)
INTEGER feature_id
于 2013-11-10T19:02:18.807 回答