0

場所を評価するレールサイトを構築しています。

各場所はカテゴリに属しています。各カテゴリには多くの機能があります。したがって、場所は 1 つのカテゴリにのみ属することができますが、その機能の多くを選択することができます。場所がカテゴリ 1 に属している場合、場所はカテゴリ 1 の (1 つまたは複数の) フィーチャのみを持つことができ、それ以外は何も持つことができません。また、各場所の年齢層。

これを達成するためのレールの方法は何でしょうか?

  • 年齢層ごとに別のテーブルを用意する必要がありますか、それとも場所テーブル自体の一部にする必要がありますか?
  • フィーチャを場所に関連付けるにはどうすればよいですか? 以下に示すように、別のテーブル (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

AgeGroup テーブル: (1 つの場所で複数の年齢層を選択できます)

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

場所のエントリは、フォームの送信を通じて作成されます。

ありがとうございました。

4

1 に答える 1

1

Places テーブルまたは別の PlacesAgeGroups テーブルに年齢グループのブール フラグを設定する必要があります。

PlacesAgeGroups テーブル:

INTEGER id
INTEGER place_id
INTEGER age_group_id

AgeGroups テーブル:

INTEGER id
INTEGER description

同様に、PlacesFeatures には、レコードごとに 1 つのフィーチャとしてフィーチャへの参照が必要です。

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 に答える