場所を評価するレールサイトを構築しています。
各場所はカテゴリに属しています。各カテゴリには多くの機能があります。したがって、場所は 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
場所のエントリは、フォームの送信を通じて作成されます。
ありがとうございました。