各学校に複数の場所と複数のコースがあるこのスキューバ スクールのアプリを作成しています。ユーザーが特定の学校で特定のインストラクターによって教えられたすべてのコースを見つけることができるようにしようとしています (ああ、少年)。スキーマは次のとおりです。
create_table "courses", :force => true do |t|
t.string "course_name"
t.integer "course_number"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "teacher_id"
t.integer "school_id"
end
create_table "teachers", :force => true do |t|
t.string "fname"
t.string "lname"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "school_id"
end
次の関係を設定しています。
courses belong_to school
courses belong_to teacher
teacher belong_to school
school has_many courses
school has_many teachers
これを行う方法はわかりませんが、これは私の(ばかげた)試みです:
#I need to match these queries where course.teacher_id is equal to teacher.id
teachers = Teacher.where('fname ILIKE ? OR lname ILIKE ?', params[:fname], params[:lname])
courses = Course.where('school_id = ?', params[:id])
#now to join the above queries
courses_offered_by_searched_teacher_at_specified_school = courses.joins(teachers)
私がやろうとしていることにあなたが従うことができることを願っています。ありとあらゆる助けをいただければ幸いです。