2016-03-31 3 views
0

私はコースのグループの登録ツールを設定しています。コースには日(文字列)、start_time(時間)、end_time(時間)があります。また、私はこのプロジェクトでPostgresを使用しています。日の例は "M、W、F"ですが、それが助けになるならば変更することができます。Ruby on Railsでの週単位の並べ替え

私はコースを1日1回グループ分けし、その後は時間をかけてグループ化することを検討していますが、重複はありません。私が意味することは、クラスが月曜日/水曜日/金曜日に会うならば、私はちょうど月曜日にそれを表示することです。私たちは主に、同時に人々がクラスにサインするのを防ぐためにこれをやっています。

私はモデル名のコースを持っている場合、どのように私はこのようにビューに表示することができます。

Monday: 
CS1 | Intro to Programming | 10:00AM-11:00AM 
CS2 | Intro to Java  | 10:00AM-11:00AM 
CS4 | Databases   | 4:00PM-5:00PM 

Tuesday: 
CS3 | Intro to Web Dev  | 3:00PM-5:00PM 

私は文字列として日を持つことが最良の選択肢であるかどうかわからないが、私はないです何が正しい方法だろうか。

コースモデル:曜日が保存されている方法

create_table "courses", force: :cascade do |t| 
    t.string "name" 
    t.string "code" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "professor" 
    t.string "cformat" 
    t.string "sections" 
    t.integer "credits" 
    t.time  "start_time" 
    t.time  "end_time" 
    t.string "days" 
    t.integer "max_cap" 
    end 
+0

もちろん、属性は何ですか? – toddmetheny

+0

質問に追加しました。最初の考えは、ハッシュや配列を作成してコントローラにグループ化して、ループで見ることができるようにすることです。 – ajk4550

答えて

1

@monday_courses = Course.where(day_of_week: "Monday") 

あなたが「MWF」のようなものを保存している場合は、このような何か行うことができます:

@monday_courses = Course.select {|course| course.day.include?("M")} 

を私はそのクエリが追加の制約(所属多分唯一のコースを追加することによって、さらに最適化することができ確信しています学校へ行くか何でも)が、基本的にはあなたがやることです。

+0

ありがとう、これが正しい方向に向いています! – ajk4550

+0

2番目の提案は、保存方法に基づいた解決策です... "M"を曜日に置き換えてください。 – toddmetheny

0

ここで私がやった解決策です。私はそれが最も効率的ではない賢明なスペース賢明だと思うが、少なくともそれは1つのActiveRecordクエリには、重複を削除します。ビューではテーブルを作成することはできましたが、テーブルのコードをループしていて、その日がキーであったため、その日のコースは配列としての値でしたので、ハッシュを持つことは役に立ちました

# Creating hash of classes 
@monday_courses = Array.new 
@tuesday_courses = Array.new 
@wednesday_courses = Array.new 
@thursday_courses = Array.new 
@friday_courses = Array.new 

Course.all.order("start_time ASC").each do |course| 
    if course.days.include?("M") 
     @monday_courses.push(course) 
    elsif course.days.include?("T") 
     @tuesday_courses.push(course) 
    elsif course.days.include?("W") 
     @wednesday_courses.push(course) 
    elsif course.days.include?("R") 
     @thursday_courses.push(course) 
    elsif course.days.include?("F") 
     @friday_courses.push(course) 
    end 
end 

@courses_hash = Hash["Monday" => @monday_courses, "Tuesday" => @tuesday_courses, "Wednesday" => @wednesday_courses, "Thursday" => @thursday_courses, "Friday" => @friday_courses] 
関連する問題