【发布时间】:2013-11-22 11:46:39
【问题描述】:
我正在建立一个对地方进行评分的 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
一个地方条目将通过表单提交创建。
谢谢。
【问题讨论】:
标签: ruby-on-rails activerecord database-design relational-database