lectures_controller.rb 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. class LecturesController < ApplicationController
  2. before_action :set_lecture, only: %i[show edit update destroy]
  3. before_action :check_can_edit, only: %i[edit update]
  4. before_action :check_can_create, only: %i[create]
  5. def show; end
  6. def new
  7. @lecture = Lecture.new
  8. end
  9. def edit; end
  10. def create
  11. @lecture = Lecture.new(lecture_params)
  12. if @lecture.save
  13. flash[:success] = 'Created lecture'
  14. redirect_to @lecture
  15. else
  16. render :new
  17. end
  18. end
  19. def update
  20. if @lecture.update(lecture_params)
  21. flash[:success] = 'Updated lecture'
  22. redirect_to @lecture
  23. else
  24. render :edit
  25. end
  26. end
  27. private
  28. # Use callbacks to share common setup or constraints between actions.
  29. def set_lecture
  30. @lecture = Lecture.find(params[:id])
  31. end
  32. def current_course
  33. begin
  34. Course.find(params.require(:lecture)[:course_id])
  35. rescue
  36. @lecture.course
  37. end
  38. end
  39. def lecture_params
  40. allowed = [:description]
  41. allowed += %i[course_id starts_at ends_at location] if current_user.is_course_administrator?(current_course)
  42. params.require(:lecture).permit(*allowed)
  43. end
  44. def check_can_create
  45. redirect_to root_url unless params.require(:lecture)[:course_id] && current_user.is_course_administrator?(current_course)
  46. end
  47. def check_can_edit
  48. redirect_to root_url unless current_user.is_course_teacher?(@lecture.course)
  49. end
  50. end