2017-05-26 11 views
1

私は現在、講師と一緒にワークショップクラスを予約するためのRuby on Railsアプリケーションを構築しています。私はモデルのセットアップに関するいくつかのアドバイスを求めています。Rails App - 予約タイムスロットスキーマ設定

私はすでにthis & thisのスタックオーバーフロースレッドを見ましたが、私の質問には答えていません。


機能が必要:

  • インストラクターを加えてさらに1オフタイムスロットを開放できるようにする必要があり
  • インストラクターをご予約のために利用可能な毎週繰り返しタイムスロットを設定できるようにする必要があります毎週繰り返すスロットへ
  • インストラクターは、利用可能なタイムスロットを一度に削除する必要があります。教師は、これだけの時間を一時間の長い開始され
  • すべてのクラスは
を検討する必要が希望通りインストラクターが休暇に行くとき
  • クラスは、一人の学生に限定されるものではなく、クラスは、多くの生徒を持つことができます

    私の現在の提案:

    私は三つのモデルと3つのテーブルを、それを設定し検討しています。 3つのモデルはすべて、コントローラworkshopに接続します。

    例データでは、次のシナリオを使用しています。トムはMon & Tue 9amにクラスを持っていますが、来週のみ、水曜日に開催するTueクラスを切り替える予定です。

    私は、すべての教師のクラスをリストアップしたモデルを持っているということです。私は先生のクラスのそれぞれのための定期的なタイムスロットのための別のモデルを持っています。 workshop_times_recurringテーブルにリンク

    ID | Workshop Name | Price 
    1 | Tom's Class | 100 
    

    workshop_times_recurringモデル:workshopテーブルにリンク

    workshopモデル:私は、毎週繰り返しクラスの時間に「変化」のリストとして機能例外の3番目のモデルを持っています: workshop_times_otherテーブルにリンク

    ID | Workshop ID | Times 
    1 | 1   | {Monday 0900, Tuesday 0900} 
    

    workshop_times_otherモデル:

    ID | Workshop ID | Type | Time 
    1 | 1   | Active | {2017May31 09am} 
    2 | 1   | Inactive| {2017May30 09am} 
    

    私の質問は以下のとおりです。

    1. が、これは私のアプリのためのモデルを設定するための最もエレガントな方法だと私は完全にオフトラックじゃありませんか?そうでない場合、よりよい解決策は何ですか?
    2. 私は'Monday 0900, Tuesday 0900''2017May31 09am'のような文字列を解析して、javascript駆動の日時選択カレンダーに情報が正しく表示されるようにしたいと考えています。現在の設定でフロントエンドでこれを達成できますか?
  • 答えて

    1

    主に2番目の質問に答えるために、私はOpenStreetMap Opening Hoursのようなスケジュールを繰り返すための確立された形式を使用することを提案します。それにはJavaScript libraryもあります。

    しかし、それも例外的なスケジュールに対処することができるので、あなたのモデルをかなり単純化するでしょう。

    +0

    偉大な、私は見てみましょう、ありがとう – michaelqz